如何解决如何在主分支历史记录中更早地移动多个分支共有的 git 提交?
我有一个看起来像这样的 git 仓库:
/C''-D''-F (featureB)
A-B-C---D---E (main)
\C'--D'--G (featureA)
我想将 C
和 D
的常见提交更早地移到 main
分支中
历史,以便回购看起来像这样:
/F (featureB)
A-B-C-D-E (main)
\G (featureA)
需要注意的是,C
/C'
/C''
和 D
/D'
/D''
提交修改的代码相同,但由于在不同的分支,它们都有不同的提交哈希。
解决方法
让我们重新表述手头的任务:
我想获取一个分支的 N 个最新提交的更改,并以它们的父提交变成不同的方式移动/复制它们。
这就是 git rebase
允许您执行的操作。您可以告诉它要复制的提交范围以及要将其复制到哪个父提交:
git rebase --onto main^ featureA^ featureA
git rebase --onto main^ featureB^ featureB
会将 featureA 和 featureB 的最新提交变基到分支 main 的倒数第二次提交。您也可以直接使用提交哈希:
git rebase --onto D D' featureA
git rebase --onto D D'' featureB
,
[C 和 D]...修改相同的代码,但在三个分支中具有不同的提交哈希。
在这种情况下,您可能希望首先从两个功能分支中删除 C 和 D 提交,然后重新定位到主分支。您可以使用 git rebase -i
来完成第一部分,对您不想要的提交使用 drop
选项。然后(从每个分支)git rebase main
在 main
分支的当前状态之上重放每个分支中的提交。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。