簡體   English   中英

Git回滾然后在提交中前進

[英]Git rollback then step forward in commits

我在github上有一個克隆到本地倉庫的項目。 在最近的40次提交中的某個地方,我更改了一些破壞代碼的內容,直到現在仍未意識到。 所以我有一個兩部分的問題:

“回滾”的最佳方法是什么,或者我想將本地存儲恢復為40之前的提交。 無需推送至主倉庫。

然后逐步執行提交以允許我在每一步之后進行構建並找到導致代碼中斷的那一步的最佳方法是什么?

即在我的腦海中,我想象一個類似的序列:

  • 回滾提交
  • 構建代碼
  • 壞了嗎?
  • 如果沒有,則前進到下一個提交

環:

  • 它打破了嗎
  • 如果沒有,則前進到下一個提交並跳轉到循環
  • 否則我發現問題有所改變。

我在eclipse中使用egit插件,盡管如果可以簡化事情的話可以使用git bash,但是我幾乎是git cmd n00b,所以我將逐步使用它。

返回上一個已知的工作提交:

$ git checkout HEAD~40

將在HEAD之前簽出40個提交的分離HEAD狀態(或者您可以只使用提交哈希)。

要查找錯誤的提交,可以使用git bisect ,如下所示:

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

此過程將對錯誤的提交-良好的提交范圍進行二進制搜索,以幫助您查找錯誤的位置。 有關如何運行此過程的更多詳細信息,請參閱文檔。 但總的來說,最好有一個可以運行測試的腳本(成功后退出代碼為0的腳本)可以自動執行整個過程:

$ git bisect run run_tests.sh args

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM