我有一个功能分支,在过去几周内已与开发分支多次合并。在我们将它合并到master分支之前,我们希望删除在过去几周内合并到开发分支中的功能分支代码。有没有统一的方法来做到这一点?
合并是使用--no-ff创建的,因此新分支中的提交应该有自己的对象。
_______ master ______________________________
\ /
\ /
\__hofix-1_____C/
\
_ development _______________________\____________
\ / / /
\ / / /
\_feature-test__A/_________B/________D/
所以我想从开发中删除合并的提交A,B和D,同时仍然保留hotfix-1,合并C,并且仍然继续在功能分支上工作。
答案 0 :(得分:4)
问题有些模糊。你有一个开发分支,并希望取消合并几个传入的合并,其余的?如果是这样,您可以使用rebase -i -p
一些低点,从todo列表中删除合并提交。请注意,您应该重新检查您提取的所有提交,因为下一步工作可能会在其上构建。
另一种方法是在顶部使用git revert
进行不必要的更改。它完成了最后的结果,但可能会让你的历史质量很差。
答案 1 :(得分:1)
如果我理解你的情况,我认为你不需要像rebase,revert等那么重的东西。你可以这样做:
查看开发日志,在合并A之前找到提交哈希,并创建一个名为“new-dev”的新分支:
git checkout -b new-dev somecommithash
现在从hotfix-1分支合并到C:
git merge C
......你已经完成了。 new-dev分支现在具有开发内容,与C合并,减去A B和D.
如果您现在想让开发人员分支指向与new-dev分支相同的位置,那就简单如下:
git branch -f developer new-dev
但为了安全起见,您可能希望在强行将其移动到新位置之前,使用标记或分支标记旧的开发人员分支位置。