Always use version from merged branch on conflicts
Currently I am working in a feature branch that will soon be merged back into master. I recently tried just that and had some merge conflicts, which I had to fix manually.
So, is it possible to tell git to always use the version from the merged branch in order to avoid merge conflict开发者_开发知识库s beforehand? In this case I fixed the conflicts manually but always chose the version from the merged branch, so this would save me some tedious work.
You can do exactly this in git with the following command, assuming that feature
is the name of your feature branch:
git merge -s recursive -X theirs feature
This says to use the "recursive" merge strategy, but with the "theirs" option. This means that when there is a conflict, it will be automatically resolved by taking the version of the hunk from the feature branch, not your current branch. (Note that this is completely different from the "theirs" merge strategy, which has now been removed from git.)
This feature was introduced in git v1.7.0.
You can't use the recursive "ours" strategy. It would omit your changes that didn't conflict.
You could script getting the file names of the conflicted files, and do a git checkout --ours -- filename followed by a git add filename.
If you're getting the same conflicts over and over, turn on rerere and that may be enough so you don't have to resolve the conflicts.
Hope this helps.
精彩评论