git merge:如何保存master版本的文件?

时间:2016-11-15 11:57:30

标签: git git-merge

我使用git并在拉取请求后将分支合并到master中。

我的理解是,如果master中的文件自上一个共同祖先以来没有被更改,但是分支中的文件相同,git将在合并期间使用分支中的版本。

对于两个分支之间的大多数差异,这是我想要的行为,但是在一个子目录树中有一些文件,我希望合并保留主版本并丢弃分支版本。

这是一个很好的基于命令行的工作流程吗?

2 个答案:

答案 0 :(得分:3)

最简单的选择是使用git merge --no-commit --no-ff合并所有内容,并在提交所有内容之前停止在最后一步。然后重置/签出那些需要保持不变的文件,然后运行git-commit。每当您进行不希望合并到master的更改时,您都需要这样做。这种方法的风险在于你可能会忘记一些差异/文件,并且它们最终会出现在同事的存储库中而没有明显的理由。

另一个更复杂的选择是创建两个分支,让我们称它们为testsfeatures。分支features包含您要合并到master的更改,而分支tests包含其他更改。因此,您会继续将features合并到mastertests上。这消除了上述风险,使其成为最佳选择。

第三种选择是继续合并,然后进行提交,以恢复那些你不想改变的事情。这使您的同事更难理解您的贡献。

答案 1 :(得分:1)

我想有很多方法。我会做什么:

  1. 执行合并(确保使用--no-ff开关不会成为快进)
  2. 编辑(又名修改)最后一次提交(这将是你的合并提交)
  3. 您要更改'
  4. 的未更改文件
  5. 执行提交(将是没有您的文件的新合并提交)
  6. 重置文件中的更改。
  7. 另一种方法是在合并后恢复所有触及文件的提交(如果可能)。