我已经大量使用 Git 大约 7 年了。几天前,我发现了一个令我惊讶的行为。我发现git log
,git blame
并git bisect
表现出这种奇怪的行为。一位朋友让我知道了解决我问题的--full-history
标志。git log
我想知道,对于我自己的教育,是否有git blame
和git bisect
.
随意使用此 repo 亲自查看问题:https ://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z
这是它的日志:
$ git log --graph
* commit b7a8d7aa001d06eb7491ab5fb447a8dd3aa421a8
| Author: Ram Rachum <ram@rachum.com>
| Date: Tue Apr 19 17:45:01 2016 +0300
|
| adding more to some-file
|
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: 2413945 3068c7d
| | Author: Ram Rachum <ram@rachum.com>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| | Merge branch 'master' into development
| |
| * commit 3068c7d2548f1798b6840f73b13a649937339f28
| | Author: Ram Rachum <ram@rachum.com>
| | Date: Tue Apr 19 16:02:27 2016 +0300
| |
| | Adding sugar to coffee
| |
* | commit 24139451ab954b1f0a9ef616775a3dba0ac81669
|/ Author: Ram Rachum <ram@rachum.com>
| Date: Tue Apr 19 16:01:28 2016 +0300
|
| Creating some-file
|
* commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <ram@rachum.com>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
在第一次提交中,该文件coffee
被添加。在 commit3068c7d
中,我在文件中添加了一行“sugar” coffee
。但后来我把这个分支合并到development
分支中,在那个合并中,出现了一个错误,“糖”行被删除,coffee
留空。然后添加了另一个提交b7a8d7a
,进行了不相关的更改,以进行良好的衡量。
现在我看着我的咖啡,发现里面没有糖。我清楚地记得在我的咖啡里加了糖。我运行git log coffee
,并得到这个输出:
$ git log coffee
commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <ram@rachum.com>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
而已。git log
既没有显示我添加糖的原始提交,也没有显示删除它的合并。缺少两个非常相关的提交。
这个问题让我沮丧了大约一个小时,因为它发生在一个巨大的企业仓库中,在那里手动查找提交要困难得多。
我还尝试使用git bisect
andgit blame
来确定这两个提交,但是这两个工具都忽略了这两个提交。git bisect
在我完成所有git bisect bad
andgit bisect good
操作后指出我错误的提交。
然后,正如我一开始所说,一位朋友指给我看--full-history
国旗:
$ git log --full-history --graph coffee
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: cf02fbb 3068c7d
| | Author: Ram Rachum <ram@rachum.com>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| | Merge branch 'master' into development
| |
| * commit 3068c7d2548f1798b6840f73b13a649937339f28
|/ Author: Ram Rachum <ram@rachum.com>
| Date: Tue Apr 19 16:02:27 2016 +0300
|
| Adding sugar to coffee
|
* commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <ram@rachum.com>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
这让我很高兴,因为它显示了两个相关的提交,一个添加糖和删除它的合并。所以我的问题解决了。但我真的希望我也能知道如何制作git bisect
和git blame
表现。有没有人碰巧知道?