在這裏,我有我的回購提交日誌。你可以看到「Merge branch ... into ...」提交,並且在提交之後,分支被合併。刪除Git中的合併提交
我需要刪除該合併提交,但不會放棄更改。 默認重新綁定不顯示這些合併提交。
在這裏,我有我的回購提交日誌。你可以看到「Merge branch ... into ...」提交,並且在提交之後,分支被合併。刪除Git中的合併提交
我需要刪除該合併提交,但不會放棄更改。 默認重新綁定不顯示這些合併提交。
如果你想申請的提交的變化,而不包括合併提交(這是羅蘭·史密斯指出,通常被認爲是不好的做法),您可以使用git rebase
具有以下流程:
git checkout master
git reset --hard <hash of prior commit>
。確保您正在處理的分支上沒有未提交的更改,或者此命令將其清除。dev
):git checkout dev
。dev
到主。這會使dev的HEAD
提交上游到主指向的最近提交:git rebase master
(有關更多信息,請參閱the docs)。git checkout master
)併合並新分支git merge dev
。這會將更改拖放到主服務器上,而無需添加合併提交。master
分支看起來沒問題,您也必須更新任何遠程存儲庫上的分支。由於您正在撤消之前的歷史記錄,因此當您推送分支時,您必須使用--force
(或-f
)標誌作爲遠程回購,以接受更改,即:git push origin master --force
。這就是它的全部。在完成此操作之後,從主服務器分支的dev
上的提交現在應該在上面的預合併提交的上游。
注意:運行rebase將永久更新已更改分支的提交歷史記錄。爲了安全起見,我建議採取以下兩種方法中的一種:
git reset --hard <original_commit_hash>
將分支放回原始提交。使兩個分支的備份副本你衍合那些在原來指向提交前:
git的結帳-b master_bk git的結帳-b dev_bk
所以,你想要做一個軟復位? –
不,我不想重置任何更改。我只想「隱藏」合併分支提交。因爲他們有雙倍。一個是合併,另一個是提交。 –
可能重複的[git刪除合併提交從歷史記錄](http://stackoverflow.com/questions/17577409/git-remove-merge-commit-from-history) – Makoto