我剛纔做了一個如何撤消git merge squash?
git merge --squash feature-branch
到我develop
分支。
問題是,上述命令更新了頭部而未創建新的提交。我的意圖是創建一個單一的承諾,適用於develop
的負責人。
所以簡而言之,合併前後develop
分支的日誌完全一樣。
有沒有辦法將develop
恢復到git merge
之前的狀態?
謝謝。
解決方案
基於從丹D.註釋及以下我接受的答案是能解決我的問題。請參閱下面的內容如果您在同一條船上,我所做的事情如下:
1 - 我跑了git reflog
,它列出了我用我的develop
分支所做的所有提交和檢出。
2 - 我沒有按照建議去做git reset [email protected]{1}
,而是在做最後一次開發的時候找到了我想保留的數字。在我的情況下,它是[email protected]{188}
。所以我輸入git reset [email protected]{188}
。
3 - 我運行了一個git log
,它有一個乾淨的日誌,只顯示我在進行錯誤合併之前提交的提交。
4 - 我運行git add -A .
來分階段列出在我的功能開發期間創建的所有新文件。
5 - 我跑git commit -m "install feature-x"
6 - 結果現在我有分支develop
用正確的文件和日誌是乾淨的 - 只顯示一次提交的所有更改的feature-x
發展過程中我做到了。
我仍然需要找出爲什麼我的原始git merge --squash feature-branch
沒有按預期工作。
解決方案2
馬克Longair的答案是明確的解決我的問題。我剛剛測試過它,它工作。見我現在使用的壁球一個feature-branch
內的所有內部提交和僅包含一個提交到develop
分支的過程如下:
git checkout develop
git merge --squash feature-branch
git commit -m "install of feature-branch"
上述序列的工作就像一個魅力。
使用'git reflog'。 –