Pet*_*ter 9 git branch git-merge pull-request git-branch
底线:
我想将一个拉取请求分成两个具有不同文件子集的较小拉取请求。我不想按提交拆分,我想按文件拆分。
细节:
假设我有一个分支branch_1 (master分支之外),我在其中修改了 2 个文件:file_1和file_2. 假设这些文件在一次或多次提交中一起修改(更改不能通过提交分开),并且假设这些文件没有以任何方式相互引用。
一段时间后,我想合并branch_1到master,但决定只file_1准备合并。我file_2以后可能会合并,所以我把它放在一个新的分支上。
所以我创建了一个branch_2off of branch_1. branch_2现在包含对file_1和的更改file_2。没关系,因为无论如何branch_2都会合并branch_1。
现在,我怎样才能很好地恢复branch_1以删除对 的更改file_2?
如果我只是去branch_1和git checkout master file_2,它的工作原理,但是:当我合并branch_1到master,然后master进入branch_2,那么它会删除file_2。这根本不是我想要的!
基本上我想让它就好像file_2从来没有存在过一样branch_1。
Dee*_*One 10
选择特定文件的一种稍微方便的方法:
branch_2自masterbranch_1成branch_2与--no-commit和--squashbranch_2现在,您可以用逆选择文件再次重复上述步骤,完全分裂的两个分支马上,或只是等待,直到branch_2被并入master然后合并master回branch_1,有效地“快进”这些选定的文件,并从原来的中排除branch_1。
(*) 许多基于 UI 的 git 客户端提供批量还原工具,使程序非常舒适
编辑:添加 --squash 选项,因为其他提交branch_1可能最终master只有其实际内容的一个子集