底线:
我想将一个 pull 请求拆分为两个较小的 pull 请求,它们具有不同的文件子集。我不想按提交拆分,我想按文件拆分。
详细信息:
假设我有一个branch_1
分支(位于master
分支之外),在其中修改了2个文件:file_1
和file_2
。假设在一个或多个提交中一起修改了这些文件(更改不能通过提交分开),并且假定这些文件没有以任何方式相互引用。
一段时间后,我想将branch_1
merge 为master
,但决定仅准备将file_1
merge 。我稍后可能会 merge file_2
,因此将其放在新的分支上。
因此,我从branch_2
创建一个branch_1
。 branch_2
现在同时包含对file_1
和file_2
的更改。很好,因为branch_2
无论如何都将在branch_1
之后 merge 。
现在,我如何才能很好地还原branch_1
以删除对file_2
的更改?
如果我只是继续使用branch_1
和git checkout master file_2
,则可以,但是:当我将branch_1
merge 为master
,然后将master
merge 为branch_2
时,它将删除file_2
。这根本不是我想要的!
基本上,我想让它看起来像file_2
上根本不存在branch_1
。
最佳答案
选择特定文件的一种更方便的方法:
branch_2
创建master
branch_1
merge 为branch_2
branch_2
中的剩余文件现在,您可以使用反向文件选择再次重复该过程,立即将两个分支完全分开,或者只是等到
branch_2
merge 到master
中,然后再将master
merge 回branch_1
中,从而有效地“快速转发”那些选定的文件并将其排除在外来自原始的branch_1
。(*)许多基于UI的git客户端提供批量还原工具,使过程相当舒适
编辑:添加了--squash选项,因为从
branch_1
提交的其他内容可能最终在master
中,但仅包含其实际内容的一部分
关于git - Git:如何按文件(而不是按提交)拆分分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49034675/