目前我正在一个功能分支上工作,很快将合并回主分支。最近我尝试了这个过程,但出现了一些合并冲突,需要手动修复。
所以,有没有可能告诉git始终使用来自合并分支的版本,以避免事先的合并冲突?在这种情况下,我手动解决了冲突,但总是选择了来自合并分支的版本,因此这可以为我节省一些繁琐的工作。
目前我正在一个功能分支上工作,很快将合并回主分支。最近我尝试了这个过程,但出现了一些合并冲突,需要手动修复。
所以,有没有可能告诉git始终使用来自合并分支的版本,以避免事先的合并冲突?在这种情况下,我手动解决了冲突,但总是选择了来自合并分支的版本,因此这可以为我节省一些繁琐的工作。
feature
是你的特性分支的名称:git merge -s recursive -X theirs feature
这里建议使用“递归”合并策略,但同时选择“theirs”选项。这意味着当发生冲突时,将自动采用来自特性分支的版本来解决,而不是当前分支的版本。(请注意,这与现在已从git中删除的“theirs”合并策略完全不同。)
此功能是在git v1.7.0中引入的。
你不能使用递归的“ours”策略。它会忽略未发生冲突的更改。
你可以编写脚本获取冲突文件的文件名,然后执行 git checkout --ours -- filename,接着是 git add filename。
如果你一遍又一遍地得到相同的冲突,请打开 rerere 功能,这可能足以让你不必解决冲突。
希望这可以帮助到你。
theirs
合并策略所做的事情,但是在递归
策略中选择theirs
选项会做一些不同的事情 - 它会执行普通合并,但会自动以"他们"的版本解决任何冲突。 - Mark Longairgit merge
手册中的描述说它只用于有冲突的hunks,所以它将包括我们的更改,即使文件中有其他冲突的hunks也是如此。 - Mark Longair