有誰知道如何輕鬆撤消git rebase?
想到的唯一方法是手動處理它:
- git向兩個分支檢查提交父級
- 然後從那裡建立一個臨時分支
- 手工挑選所有提交
- 用manualy建立的分支替換我重新設定的分支
在我目前的情況下,這將起作用,因為我可以很容易地從兩個分支發現提交(一個是我的東西,另一個是我的同事的東西).
但是我的方法讓我覺得是次優的和錯誤的(假設我剛剛使用我自己的2個分支重新基礎).
有任何想法嗎?
澄清:我正在談論重播一堆提交的重新基礎.不僅僅是一個.
有誰知道如何輕鬆撤消git rebase?
想到的唯一方法是手動處理它:
在我目前的情況下,這將起作用,因為我可以很容易地從兩個分支發現提交(一個是我的東西,另一個是我的同事的東西).
但是我的方法讓我覺得是次優的和錯誤的(假設我剛剛使用我自己的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