問題

有誰知道如何輕鬆撤消git rebase?

想到的唯一方法是手動處理它:

  • git向兩個分支檢查提交父級
  • 然後從那裡建立一個臨時分支
  • 手工挑選所有提交
  • 用manualy建立的分支替換我重新設定的分支

在我目前的情況下,這將起作用,因為我可以很容易地從兩個分支發現提交(一個是我的東西,另一個是我的同事的東西).

但是我的方法讓我覺得是次優的和錯誤的(假設我剛剛使用我自己的2個分支重新基礎).

有任何想法嗎?

澄清:我正在談論重播一堆提交的重新基礎.不僅僅是一個.

  最佳答案

最簡單的方法是找到分支的頭提交,因為它是在 reflog 中啟動rebase之前...

 git reflog
 

並將當前分支重置為它(在使用 --hard 選項重置之前,通常要注意的是絕對確定的)。

假設舊提交在ref日誌中是[email protected]{5}:

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

在Windows中,您可能需要引用引用:

 git reset --hard "[email protected]{5}"
 

您可以透過做一個git log [email protected]{5}(Windows:git log "[email protected]{5}")來檢查候選人老頭的歷史。

如果您沒有禁用每個分支reflogs,您應該能夠簡單地執行git reflog [email protected]{1}作為rebase分離分支頭,然後重新連線到最終頭.我會重複檢查這個,儘管我最近沒有核實這一點.

每次預設情況下,所有reflogs都被啟用為非裸儲存庫:

 [core]
    logAllRefUpdates = true
 

  相同標籤的其他問題

gitrebasegit-rebaseundo