我怎样才能删除过去合并为master的分支?
来自:
master
... a---> b ---> c ---------> d -----> e ---> f ---> g ---> h
\ /
x ---> y ------> z
branch1
到:
... a---> b ---> c ---------> d -----> f ---> g ---> h
\
x ---> y ---> z
branch1
我想撤消/删除合并一个分支到我之前做过的主人。
我尝试了类似的东西但却遇到了冲突。有可能吗?
# currently we are in <h> commit in master branch
git checkout master
# new temporary branch
git branch tmp_master
git checkout tmp_master
# reseting temp. branch to reqd. commit
git reset <d> --hard
# cherry-picking subsequent commits
git cherry-pick <f>..<h>
完成后 - 我原本应该这样做:
# change temp. branch to master branch
git branch -D master
git branch -m master
答案 0 :(得分:1)
您需要:
rebase --interactive
(允许您放弃&#34; e
&#34;,合并提交),git revert -m 1 e
(请参阅&#34; Undoing Merges &#34;),这会创建一个新的提交,取消合并引入的更改。第二个解决方案允许简单推送(您正在推送新提交),而第一个解决方案需要push --force
(如果多个用户在同一个远程仓库上进行协作,则会出现问题)
答案 1 :(得分:1)
git rebase --onto d e
会从e
的分支历史中删除h
。有关详细信息,请参阅here。