删除历史中合并的分支?

时间:2016-09-15 11:48:13

标签: git git-branch git-merge

我怎样才能删除过去合并为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

2 个答案:

答案 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