是否可以仅使用某些文件在git中从一个分支合并到另一个分支?

时间:2016-07-15 14:50:48

标签: git merge

我们说我有两个分支

  • A

我想将A中的更改合并到B。但是,A包含一些我更改的文件以及其他人更改的文件。例如,在A中,有2个文件已更改。

  • path / to / JavaFile1.java(我更改了此文件)
  • path / to / another / JavaFile2.java(另一个用户更改了此文件)

在从A合并到B时,我发现与其他人更改的文件存在冲突(在运行示例中,JavaFile2.java)。现在,我希望合并继续进行,以便

  • "忽略"或"跳过"由其他人更改的文件(我不知道如何解决该冲突)
  • 我希望合并是这样的,当别人合并时,他们也必须处理冲突并决定做什么。

我不确定使用minetheirs的解决方案是否合适,因为在下一次合并时,它可能永远不会再考虑冲突(git会将冲突标记为在将来的合并中解决)。

我想我也可以挑选,但在我们的团队中,我们制定了一项政策merge向前(例如从AB)和向后挑选(例如从BA)。

有可能像我说的那样做吗?我们还有一个策略,开发人员必须合并他们自己的提交,但不幸的是,这个开发人员在接下来的两周(假期)不可用。

1 个答案:

答案 0 :(得分:2)

对我来说,处理这个问题的概念上最简单的方法是执行合并,然后将有问题的文件重置为B中的提交,该提交位于合并之前该分支的HEAD

用于重置其他用户修改的文件的命令是:

git checkout <SHA-1> path/to/another/JavaFile2.java

其中<SHA-1>是合并之前B上最近一次提交的哈希值(即您要保留的版本)。

如果在合并期间此文件中存在合并冲突,则可以使用上述命令重置它并提交。如果合并完成且没有冲突,那么您仍然可以运行上面的命令,并且可以修改合并提交:

git add path/to/another/JavaFile2.java
git commit --amend