git常用命令速查
# git常用命令速查## 创建版本库
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 "message" 提交所有更新过的文件
git commit --amend 修改最后一次提交
## 查看提交历史
git log 查看提交历史
git log -p <file> 查看指定文件的提交历史
git blame <file> 以列表方式查看指定文件的提交历史
## 撤销
git reset --hard HEAD 撒消工作目录中所有未提交文件的修改内容
git checkout HEAD <file>撤消指定的未提交文件的修改内容
git revert <commit> 撤消指定的提交
## 分支与标签
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 fetch <remote> 从远程库获取代码
git pull<remote><branch># 下载代码及快速合并
git push <remote><branch> 上传代码及快速合并
git push <remote><branch/tag-name> 删除远程分支或标签
git push--tags 上传所有标签 我来 补充一些
git cherry-pick
git cherry-pick commitID1 commitID2 // 抓取 commitID1 commitID2 这两条提交记录放到当前分支
如果你想将一些提交复制到当前所在的位置(HEAD)下面的话, Cherry-pick 是最直接的方式了。我个人非常喜欢 cherry-pick,因为它特别简单。
------------
Git Tags
分支很容易被人为移动,并且当有新的提交时,它也会移动。分支很容易被改变,大部分分支还只是临时的,并且还一直在变。
有没有什么可以永远指向某个提交记录的标识呢,比如软件发布新的大版本,或者是修正一些重要的 Bug 或是增加了某些新特性,有没有比分支更好的可以永远指向这些提交的方法呢?
Git 的 tag 就是干这个用的啊,它们可以(在某种程度上 —— 因为标签可以被删除后重新在另外一个位置创建同名的标签)永久地将某个特定的提交命名为里程碑,然后就可以像分支一样引用了。
更难得的是,它们并不会随着新的提交而移动。你也不能检出到某个标签上面进行修改提交,它就像是提交树上的一个锚点,标识了某个特定的位置。
--------------
Git Describe
由于标签在代码库中起着“锚点”的作用,Git 还为此专门设计了一个命令用来描述离你最近的锚点(也就是标签),它就是 git describe!
Git Describe 能帮你在提交历史中移动了多次以后找到方向;当你用 git bisect(一个查找产生 Bug 的提交记录的指令)找到某个提交记录时,或者是当你坐在你那刚刚度假回来的同事的电脑前时, 可能会用到这个命令。
git describe 的语法是:
git describe <ref>
<ref> 可以是任何能被 Git 识别成提交记录的引用,如果你没有指定的话,Git 会以你目前所检出的位置(HEAD)。
它输出的结果是这样的:
<tag>_<numCommits>_g<hash>
tag_提交次数_g当前的hash
-------------
git bisect
git bisect是一个很有用的命令,用来查找哪一次代码提交引入了错误。
详情可参考 : http://www.ruanyifeng.com/blog/2018/12/git-bisect.html
------------
git blame
查看某行代码由谁写的,在哪个commit中提交的:
git blame fileName
其显示格式为:
commit ID ( 代码提交作者 | 提交时间 | 代码位于文件中的行数 | 实际代码 )
-------------------
选择父提交记录
操作符 ^ 与 ~ 符一样,后面也可以跟一个数字。
但是该操作符后面的数字与 ~ 后面的不同,并不是用来指定向上返回几代,而是指定合并提交记录的某个父提交。还记得前面提到过的一个合并提交有两个父提交吧,所以遇到这样的节点时该选择哪条路径就不是很清晰了。
Git 默认选择合并提交的“第一个”父提交,在操作符 ^ 后跟一个数字可以改变这一默认行为。
有一个合并提交记录。如果不加数字修改符直接检出 master^,会回到第一个父提交记录。 多谢分享 我以为是做成了一个软件可以查呢,不过这样也行 收藏了 非常感谢非常感谢 学到了,谢谢分享, 不错不错 checkout学一下 收藏了,有些命令老是记不住。感谢分享。 收藏慢慢看
这样也行 收藏了