2014-03-13 192 views
1

我有一個github上的項目,克隆到本地回購。在最近的40次提交中,我改變了一些破壞代碼的東西,直到現在才意識到它。所以我有兩個部分的問題:Git回滾然後提交承諾

什麼是「回滾」的最佳方式,或者我猜,將我的本地回購恢復到提交40提交前。沒有推到主回購obv。

什麼是最好的方式,然後通過提交前進,讓我建立後,每一步,找到一個導致代碼打破?

即在我腦子裏,我想象的順序是這樣的:

  • 回滾提交
  • 構建代碼
  • 沒有打破它?
  • 如果無法前進到下一提交

循環:

  • 沒有打破它
  • 如果無法前進到下一個承諾,並跳轉到環路
  • 別的我已經找到了隨着問題而改變。

進出口使用在eclipse插件例如:It,雖然可以使用git的bash如果讓事情變得更簡單,但我非常CMD的n00b個混蛋,所以我需要一步一步來。

+1

'git的拉<的哈希提交你想> '會改變你的視圖到那個特定的提交。你提供的散列不一定是完整的散列,它可以是足夠的十六進制數字,以使其獨立於其他提交(其中7是通常使用的大小)。隨着40通過,我建議不要一次檢查一個...而是一個近似的二進制搜索,以節省自己的時間。 – mah

回答

2

要返回到最後已知的工作承諾:

$ git checkout HEAD~40 

請問HEAD之前籤一個分離的頭狀態,以40次的提交(或者你可以使用提交的哈希)。

要找到錯誤提交,你可以使用git bisect,像這樣:

$ git bisect start 
$ git bisect HEAD 
$ git bisect HEAD~40 

這個過程將做壞提交好提交範圍二進制搜索,以幫助您找到其中的錯誤是。有關如何運行此過程的更多詳細信息,請參閱文檔。但總體說來,最好有一個腳本,可以運行測試(和退出代碼爲0成功時存在),它可以自動完成整個過程:

$ git bisect run run_tests.sh args