2009-11-24 73 views
4

有沒有辦法重做git-svn rebase。或通過它重置任何效果。git-svn rebase去掉了可怕的錯誤

在我的+8000提交git-svn倉庫後,合併分支後出現問題。我的本地「主人」沒有反映任何接近完整日誌的幹線。

並運行git svn rebase正確地獲取新的修訂版,但然後嘗試應用看起來像svn中繼所有8000+提交。

是否有方法可以重置並確保主設備的HEAD指向主設備的HEAD?

回答

9

術語中存在一些混淆:「HEAD」與「head」或「tip」不同。 「HEAD」指的是當前簽出的分支。

無論如何。 :)

如果你真的想丟掉你所做的一切並將你的主人歸還給主幹的確切副本,那很簡單。假設主簽出:

git reset --hard trunk 

警告:復位--hard破壞提交的更改。

如果您想對先前的工作做出先進的解決,讓我給您一個非常非常簡短的介紹git的衆多安全帶之一:reflog。例如,如果你說

git log -g master 

你會看到master的「保存點」列表。我們稱之爲git land的reflog。每當一個操作改變一個分支時,它就在該分支的reflog的頂部預先添加一個新的保存點。換句話說,如果上一次操作你是可怕搞砸了你的一個分支,可以將分支返回到它立即被術前:

git reset --hard [email protected]{1} 

@{1}會更有意義,一旦你看一個引用日誌。 git還支持更多華麗的語法,如@{10.minutes.ago}

還有更多的事情是可能的,但這應該足以讓事情現在得到糾正。

+0

我不知道trunk關鍵字:'git reset --hard trunk'。那就是訣竅。 –

+0

這不完全是關鍵字。它只是SVN的主幹的git-svn副本的名稱......或者說,是全名的簡稱。您可以使用例如git branch -r查看短名稱的完整列表。 –