删除历史中合并的分支?
Removing branch merged in history?
如何删除我过去合并到 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
我想 undo/remove 将一个分支合并到我之前做过的 master 中。
我尝试过类似的方法,但遇到了冲突。可能吗?
# 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
您需要:
rebase --interactive
(这将允许您删除“e
”,合并提交),
- 或
git revert -m 1 e
(参见“Undoing Merges ”),这会创建一个新的提交,取消合并引入的更改。
第二个解决方案允许简单的推送(您正在推送新的提交),而第一个解决方案需要 push --force
(如果多个用户在同一个远程仓库上进行协作,就会出现问题)
git rebase --onto d e
将从 h
的分支历史记录中删除 e
。有关详细信息,请参阅 here。
如何删除我过去合并到 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
我想 undo/remove 将一个分支合并到我之前做过的 master 中。
我尝试过类似的方法,但遇到了冲突。可能吗?
# 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
您需要:
rebase --interactive
(这将允许您删除“e
”,合并提交),- 或
git revert -m 1 e
(参见“Undoing Merges ”),这会创建一个新的提交,取消合并引入的更改。
第二个解决方案允许简单的推送(您正在推送新的提交),而第一个解决方案需要 push --force
(如果多个用户在同一个远程仓库上进行协作,就会出现问题)
git rebase --onto d e
将从 h
的分支历史记录中删除 e
。有关详细信息,请参阅 here。