2013-01-12 26 views
4

我碰到下面的問題就來了承諾:的Git:如何解決中底墊

在git的變基自動解析提交的一個有一個錯誤,即作爲自動解析的結果,函數聲明引入第二時間在頭文件和編譯失敗。

我的問題是:是否有可能回到那個自動解決的提交,手動解決它,然後繼續rebase,假設我仍然在rebase過程中?

回答

6

您應該先完成原始的rebase,以便您的存儲庫處於已知狀態。然後很容易編輯提交交互重新引入錯誤的提交。退房的,你要修復的提交SHA1,然後做

git rebase -i <sha1>^ 

的編輯器將打開一個包含從擡頭承諾要修復的承諾。從列表中找到提交(應該是第一個提交),用「編輯」,保存並退出編輯器替換單詞「pick」。

現在你可以修正錯誤,然後做

git commit -a --amend 
git rebase --continue 

這就是它!

+0

非常感謝您的幫助!你知道在我重新定義時是否可以修復提交?我遇到的問題是我的rebase非常大,我想檢查每個手動解決提交後代碼是否編譯。我試圖做git reset --soft HEAD ^,但我認爲在git rebase之後 - 繼續提交被跳過(它不會顯示在歷史記錄中)。 – Tomek

+0

我不認爲你可以開始與原始rebase嵌套的互動rebase。但是,您可以在任何地方進行修改,並將其包含在每個手動解析的提交中。 –

+0

再次感謝!是的,你是對的 - rebase -i如果我在另一次rebase操作期間不會開始。由於在「錯誤」提交後我沒有繼續使用rebase,因此我想知道如何執行以下操作: 1. git stash(用於保存當前已解決的更改) 2.編輯解決不正確的文件 3. git add 4. git commit --amend 5. git stash pop 您是否認爲這個正確的「內部」rebase進程? 我猜git commit --amend會改變編輯提交的SHA校驗和。 – Tomek