创建版本库
git clone <url> #克隆远程版本库
git init #初始化本地版本库
修改和提交
git status #查看状态
git diff #查看变更内容
git add . #跟踪所有改动过的文件
git add <file> #跟踪指定的文件
git mv <old><new> #文件改名
git rm <file> #删除文件
git rm --cached<file> #停止跟踪文件但不删除
git commit -m "commit messages" #提交所有更新过的文件
git commit --amend #修改最后一次改动
查看提交历史
git log #查看提交历史
git log --oneline --number # 每条log只显示一行,显示number条.
git log --oneline --graph # 可以图形化地表示出分支合并历史.
git log branchname # 可以显示特定分支的log.
git log --oneline branch1 ^branch2 # 可以查看在分支1,却不在分支2中的提交.^表示排除这个分支(Window下可能要给^branch2加上引号).
git log --decorate # 会显示出tag信息.
git log --author=[author name] # 可以指定作者的提交历史.
git log --since --before --until --after # 根据提交时间筛选log.
--no-merges # 可以将merge的commits排除在外.
git log --grep # 根据commit信息过滤log # git log --grep=keywords
# 默认情况下, git log --grep --author # 是OR的关系,即满足一条即被返回,如果你想让它们是AND的关系,可以加上--all-match的option.
git log -S # filter by introduced diff.
# 比如 # git log -SmethodName (注意S和后面的词之间没有等号分隔).
git log -p # show patch introduced at each commit.
# 每一个提交都是一个快照(snapshot),Git会把每次提交的diff计算出来,作为一个patch显示给你看.
# 另一种方法是git show [SHA].
git log --stat # show diffstat of changes introduced at each commit.
# 同样是用来看改动的相对信息的,--stat比-p的输出更简单一些.
git log -p <file> #查看指定文件的提交历史
git blame <file> #以列表方式查看指定文件的提交历史
撤销
git reset --hard HEAD #撤销工作目录中所有未提交文件的修改内容
git checkout HEAD <file> #撤销指定的未提交文件的修改内容
git revert <commit> #撤销指定的提交
git log --before="1 days" #退回到之前1天的版本
分支与标签
git branch #显示所有本地分支
git checkout <branch/tag> #切换到指定分支和标签
git branch <new-branch> #创建新分支
git branch -d <branch> #删除本地分支
git tag #列出所有本地标签
git tag <tagname> #基于最新提交创建标签
git tag -d <tagname> #删除标签
合并与衍合
git merge <branch> #合并指定分支到当前分支
git rebase <branch> #衍合指定分支到当前分支
远程操作
git remote -v #查看远程版本库信息
git remote show <remote> #查看指定远程版本库信息
git remote add <remote> <url> #添加远程版本库
git remote rm origin #删除远程版本库
git fetch <remote> #从远程库获取代码
git pull <remote> <branch> #下载代码及快速合并
git push <remote> <branch> #上传代码及快速合并
git push <remote> :<branch/tag-name> #删除远程分支或标签
git push --tags #上传所有标签