我想将分支B的更改合并到我的分支A,合并排除对给定目录的任何更改。这里的问题是我有一些提交跨越多个目录的改变,其中一个需要被排除。合并git分支,同时排除对某些目录的更改
是否有这样的可能,例如,有历史重写?
为了澄清,我的目录结构是:
root/x
root/y
root/z
一些提交的影响所有三个目录。现在,我想以这样一种方式合并,即我的历史记录已更改为y
和z
,但不是x
。
我想将分支B的更改合并到我的分支A,合并排除对给定目录的任何更改。这里的问题是我有一些提交跨越多个目录的改变,其中一个需要被排除。合并git分支,同时排除对某些目录的更改
是否有这样的可能,例如,有历史重写?
为了澄清,我的目录结构是:
root/x
root/y
root/z
一些提交的影响所有三个目录。现在,我想以这样一种方式合并,即我的历史记录已更改为y
和z
,但不是x
。
您可以合并其他分支而不提交它,然后重新设置该目录的状态:
git merge --no-commit <branch>
git reset root/x
git commit
如果您的更改全部仍在本地,则最简单的方法是将splitting your commits转换为真正正交的更改,您可以独立合并。
死链接修复:尝试this link代替(或只看到当地的联机帮助页git的变基),并搜索下来拆分提交。
提到如果我分裂提交分裂你的提交,我该怎么办将它们独立合并?我的意思是,在合并时,所有提交到所选提交被合并。我不太确定这种方式。相反,'--no-commit'方式很明显。 –
谢谢。最后一步是我想避免的。 Rebase看起来像是一件好事,但我有超过100次提交... –
好吧,我的方法工作:)它创建了一个'邪恶的合并'虽然 – knittl
在git中避免原子提交就像在淋浴中避免水。你可以自由地尝试它,但这不是该如何使用的东西,而且你将更加努力地工作。 –