2016-01-05 90 views
-1

我在我的項目中有6個提交。我想回到HEAD^3,然後逐個嘗試每個提交。我正在尋找引入珠HEAD^3中的錯誤的代碼。我試過 git checkout HEAD^3但後來所有的改變都丟使用舊的提交的git

+2

你想使用git平分 –

+1

你是什麼意思與「後更改將丟失」一個示例代碼?您已簽出較舊的提交。所以當你執行'git log'時,後面的提交在提交歷史記錄中將不可見。這是預料之中的。這並不意味着提交失敗。提交仍然存在於您的git存儲庫的對象數據庫中。您仍然可以在簽出HEAD^3之前執行'git checkout '或'git checkout '返回您所在的分支。之後,你會再次在'git log'中看到整個歷史。 – Alderath

回答

3

我正在尋找介紹bug HEAD^3到HEAD的代碼。

您應該爲此任務使用git bisect

如果您知道問題的起始位置,則註釋文件會有所幫助。
如果你不知道什麼是中斷,並且自從你知道代碼工作的最後一個狀態以來已經有數十次或數百次提交,那麼你可能會轉向git bisect尋求幫助。

bisect命令對您的提交歷史記錄執行二進制搜索,以幫助您儘快識別哪個提交引入了問題。假設你只是將你的代碼發佈到生產環境,你會得到關於在開發環境中沒有發生的事情的錯誤報告,並且你無法想象爲什麼代碼會這樣做。你回到你的代碼,事實證明你可以重現這個問題,但你不知道什麼是錯的。

您可以平分代碼以找出答案。首先你運行git bisect start讓事情繼續下去,然後你用git bisect bad來告訴系統當前提交的內容已經損壞。然後,你必須告訴平分,當最後一個已知的良好狀態,使用git bisect好[good_commit] ...

閱讀[這裏]如何做到這一點的完整說明。


下面是關於如何使用它

enter image description here