我在本地計算機上工作,重構了一些東西(提交A,B,C,D),我總是確保輸出文件沒有改變。合併後(提交I),我發現輸出文件已更改。如何找到哪些提交包含bug
我怎樣才能找到究竟提交(E,F,G,H)是改變的原因?
A->B->C->D -I
\E->F->G->H/
謝謝!
我在本地計算機上工作,重構了一些東西(提交A,B,C,D),我總是確保輸出文件沒有改變。合併後(提交I),我發現輸出文件已更改。如何找到哪些提交包含bug
我怎樣才能找到究竟提交(E,F,G,H)是改變的原因?
A->B->C->D -I
\E->F->G->H/
謝謝!
你在git bisect
之後。你給它一個很好的修改,然後檢查它們之間的中間,等待你告訴它這個提交是好還是壞(例如因爲它沒有在那個提交中編譯),然後檢查剩下的一半的下一個中間。這種二進制搜索算法將非常快速地爲您提供更改輸出的提交。
另外,如果你可以自動判斷是否改變了腳本的輸出文件的過程中,你可以給該腳本來git bisect
,它會自動運行的腳本來確定好是壞,還是不明所以,你可以等待結果。
這似乎矯枉過正。爲什麼不分析'git log'的輸出? –
@OliverCharlesworth,因爲他說提交太大而不能看起來有用,他不知道哪些文件發生了變化,但只是輸出發生了變化。也有可能超過4個提交和以上只是一個例子。 Bisect正是他要求的正確工具。 :-) – Vampire
嗯,我可能誤解了「輸出文件已更改」 - 最初假定他的意思是某些源代碼控制的文件已更改。當然,他很可能是指某些測試的結果,在這種情況下,你是完全正確的。 –
'git log --name-only'的輸出應該顯示已更改文件的名稱。 –