gpt4 book ai didi

git - 撤消 Git 中的 merge ,以便不存在来自其他分支的提交

转载 作者:太空狗 更新时间:2023-10-29 12:52:05 25 4
gpt4 key购买 nike

我有两个分支:developmentbug_fixes,我不小心 merge 了 development 分支到 bug_fixes两到三周前,从那时起我就一直致力于bug_fixes,并且我已经推送了bug_fixes中的更改。

现在,我需要取消 merge development 分支。我想要一个纯 bug_fixes 分支,没有来自 development 分支的提交。通过谷歌搜索,我想到了以下场景:

1) 还原将 development 分支 merge 到 bug_fixes 分支的提交,但它部分完成了工作。 development 分支的提交仍然可以在 bug_fixes 分支中看到,这不是必需的。

2) rebase ,并删除进行 merge 的提交,但它仍然存在第 1 点中描述的相同问题。bug_fixes 分支仍然包含来自 development 的提交分支机构。

有没有一种方法可以删除 merge 提交,所有来自 bug_fixes 分支形式 development 分支的提交也将被删除?或者,这是不可能的?

最佳答案

如果您知道哪些提交来自开发分支(除了 merge 提交),您可以执行 git rebase -i (interactive rebase)来自最后一次良好的错误修复提交:

 b--b--(B)--M--d--b--d--b--b (bugfix)
/
d--d--d (devel)

git checkout bugfix
git rebase -i (B)
# drop M, d, and d

b--b--(B)--b'--b'--b' (bugfix)

d--d--d (devel)

更复杂的替代方案是 git filter-branch ,但希望交互式 rebase 就足够了。

OPcase ,完整的命令是:

git rebase -p -i (b)

-p 允许保留 merge 提交。

关于git - 撤消 Git 中的 merge ,以便不存在来自其他分支的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36532513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com