gpt4 book ai didi

git - 是否可以在不丢失 merge 信息的情况下重写分支的历史记录?

转载 作者:太空狗 更新时间:2023-10-29 13:14:48 26 4
gpt4 key购买 nike

我们有一个主分支,我们 merge 了大约 10 个功能分支,一次一个。

所以最近的历史是这样的:

merged feat/10 (HEAD of master)
merged feat/9
merged feat/8
merged feat/7
merged feat/6
merged feat/5
...

现在我们发现 feat/7 不好,我们想把它从 master 中移除。恢复那个 merge 提交是不够的,因为我们根本不希望那个损坏的提交存在于我们的历史中。我们不能真正使用交互式 rebase ,因为这会使历史变平,使它看起来好像都是在单个分支上完成的,我们希望保留所有好的 merge 历史。

有没有办法从分支的历史记录中删除特定的 merge 提交?

我会注意到真实的历史比你在上面的例子中看到的要复杂得多,所以手动重新做所有的 merge ,因为 feat/7 不是一个好的选择。

编辑

向那些投票将此作为重复关闭的人澄清:这不是关于如何使用 rebase 进行提交的常见问题解答,当然已经回答了很多次。这里的问题是关于展平 merge 历史的提交。

最佳答案

如果你的历史目前看起来像那样并且你没有删除分支但是你可以简单地 git reset --hard HEAD~4 这将把你的代码重置回你 merge 到 7 之前的状态然后你可以简单地 git merge 把好的 merge 回来。这是我能想到的最简单的方法。

编辑:您可以在 rebase 上使用 -p 开关来保留 merge ,但将此开关与 -i 一起使用可能会产生后果。检查 man git-rebase page 并查看 BUGS 部分以查看当前的错误。

EDIT2: 如果您在使用此命令之前未采取适当的预防措施,我不承担任何责任。在阅读联机帮助页之前不要使用它。

关于git - 是否可以在不丢失 merge 信息的情况下重写分支的历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11824907/

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