Git 有什么奇技淫巧?

关注者
2083
被浏览
46728

38 个回答

git bisect
有没有过写了一天的代码,checkin无数,结果突然发现之前没注意的地方break的时候?

这个时候要在茫茫commits里寻找那个错误的commit是多么的痛苦啊。`git-bisect`就是大救星!

git-bisect本质上就是一个二分法,用起来也很简单:
git bisect start        #start
git bisect bad          #current branch is bad
git bisect good <SHA-1> #some old commit that is good
然后只要不停的告诉git当前commit是不是好的,
git bisect good
或者
git bisect bad
就能找到罪魁祸首了!
1. 在尝试过所有命令都不能把你从深渊里挽救出来的时候,git reflog 也许能救你一命。

比如撤销一次 rebase(rebase 可是会直接修改历史的,一定要了解原理后再使用) Undoing a git rebase

2. 每次 merge 完总是出现很多 .orig 文件,使用 git clean -f 干掉所有 untracked files

3. rebase 一个 diverged 分支一直要解决冲突很痛苦,可以尝试在自己的分支先 squash 一下,git rebase -i,然后再 rebase 主干,解决一次冲突就 ok 了

4. 本地有很多其实早就被删除的远程分支,可以用 git remote prune origin 全部清除掉,这样再 checkout 别的分支时就清晰多了
为什么?