我一直在使用Git了巨資約7年`git的等效。幾天前,我發現了一個讓我感到驚訝的行爲。我發現git log
,git blame
和git bisect
表現出這種奇怪的行爲。 A friend讓我知道--full-history
標誌爲git log
解決了我的問題。我想知道,對於我自己的教育,是否有對git blame
和git bisect
的等效修正。混帳:`--full-history`爲`git的bisect`和blame`
隨意看看這個問題自己與此回購:https://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z
下面是它的日誌:
$ git log --graph
* commit b7a8d7aa001d06eb7491ab5fb447a8dd3aa421a8
| Author: Ram Rachum <[email protected]>
| Date: Tue Apr 19 17:45:01 2016 +0300
|
| adding more to some-file
|
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: 2413945 3068c7d
| | Author: Ram Rachum <[email protected]>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| | Merge branch 'master' into development
| |
| * commit 3068c7d2548f1798b6840f73b13a649937339f28
| | Author: Ram Rachum <[email protected]>
| | Date: Tue Apr 19 16:02:27 2016 +0300
| |
| | Adding sugar to coffee
| |
* | commit 24139451ab954b1f0a9ef616775a3dba0ac81669
|/ Author: Ram Rachum <[email protected]>
| Date: Tue Apr 19 16:01:28 2016 +0300
|
| Creating some-file
|
* commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <[email protected]>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
在最初的承諾,加入了文件coffee
。在提交3068c7d
中,我在coffee
文件中添加了一行「糖」。但後來我將這個分支合併到development
分支中,並且在合併中,發生了錯誤,「糖」線被移除,留下了空的coffee
。然後再添加一個提交b7a8d7a
,做出不相關的更改,以獲得更好的效果。
現在我看着我的咖啡,發現裏面沒有糖。我清楚地記得加入我的咖啡糖。我運行git log coffee
,並得到這個輸出:
$ git log coffee
commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <[email protected]>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
就是這樣。 git log
既沒有顯示我原來的提交添加了糖,也沒有顯示刪除它的合併。缺少兩個非常相關的提交。
我很沮喪由這個問題約一小時,因爲它在一個龐大的企業回購,其中提交更難手動查找發生。
我也嘗試使用git bisect
和git blame
來鎖定兩個提交,但這兩個工具忽略了兩個提交。 git bisect
在完成所有git bisect bad
和git bisect good
操作後指出我的錯誤提交。
然後,我在開始時說,一個朋友指着我對--full-history
標誌:
$ git log --full-history --graph coffee
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: cf02fbb 3068c7d
| | Author: Ram Rachum <[email protected]>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| | Merge branch 'master' into development
| |
| * commit 3068c7d2548f1798b6840f73b13a649937339f28
|/ Author: Ram Rachum <[email protected]>
| Date: Tue Apr 19 16:02:27 2016 +0300
|
| Adding sugar to coffee
|
* commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <ra[email protected]>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
這讓我很高興,因爲它顯示了兩個相關的提交,一個加入白糖和刪除合併它。所以我的問題解決了。 但我真的希望我能知道如何使git bisect
和git blame
表現良好。有沒有人碰巧知道?
'git的blame'很可能讓'--full歷史'直接在這裏(我會試試你的回購,但我不能解壓7zip文件)。 Bisect可能會拒絕合併,因爲它自己處理它們。一般來說,你沒有看到這些,因爲'git rev-list'跳過了很多合併:請參閱文檔關於TREESAME和合並處理的討論(以及--full-history如何改變這一點)。 – torek
@torek我現在試了,'怪'似乎接受國旗,但它看起來不會改變任何東西。嘗試'git blame - full-history'和'git blame - full-history --reverse'都沒有結果。關於不能打開7z檔案,這裏是在zip:https://dl.dropboxusercontent.com/u/1927707/foo.zip –
@torek也試過'git怪 - 反向HEAD ^^^ ..頭 - 完全歷史咖啡「,仍然沒有任何東西。 –