Git在分支之前拆分提交 [英] Git split commit before branch
本文介绍了Git在分支之前拆分提交的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设您有以下历史记录:
D———G feature1.1
/
...A-B-C-E-F feature1
现在我想将B拆分成两个提交,以获得:
D———G feature1.1
/
...A-B1-B2-C-E-F feature1
你不能只做git rebase-i...然后选择编辑,因为您会看到这个
B-C-D-G feature1.1
/
...A-B1-B2-C'-E'-F' feature1
但通过使用git rebase--to C‘C Feature1.1,这个问题很快就解决了。
现在查看更具体的用例。如果功能1是您的主分支,A是您的初始提交,而您想要拆分A,那么您会如何做呢?同样的技术不起作用,因为在重新建立基础之后,它们不再具有共享的历史记录。
推荐答案
主要的祖先手术是git filter-branch
领域,使用任何最方便的工具来进行任何内容更改。有时,在筛选器分支片段中最容易做到这一点,但在这里更容易提前设置内容,只需使用筛选器分支进行其祖先重写。您可以在不重写现有祖先情况下所做的事情是makeA---B1---B2
,开始这样做
git checkout B
git reset A
您的工作树现在是B
内容,您的索引指向A
内容,Head即您的下一个提交的父项是A
,因此添加B1
内容是最方便的:
git add files whose changes all belong in B1
git add --patch files whose changes partially belong in B1
git reset --patch any hunks you added by mistake
git commit # this makes B1
git add . # everything that remains belongs in B2, so add everything
git commit # this makes B2
现在剩下的唯一事情就是重新连接祖先,不需要更改内容。执行仅本地重新连接,然后使用git filter-branch
烘焙本地历史重写到依赖它的所有重写的历史:
git replace --graft C B2
git filter-branch -- --all
这篇关于Git在分支之前拆分提交的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文