Some of git’s nomenclature can be confusing, especially since it is context dependent. Following are some TLDR;s for dealing with resolving merge conflicts in different scenarios.
–ours vs –theirs
The meaning of --ours
vs --theirs
can depend on whether you are doing a rebase or a merge.
Assuming that the feature
branch is checked out
git merge develop | git rebase develop | |
To keep changes from develop | --theirs | --ours |
To keep changes from feature | --ours | --theirs |
If, during a rebase there is a conflict and you know you want to take ALL of the changes from the branch you are rebasing onto, or ALL of the changes from the feature branch you can do the following (note that --ours
vs --theirs
follows the same semantics as described in the table above):
# Take all changes from the branch on which you are rebasing
git checkout --ours <path-to-file>
# Or, if you want to take all of the changes from the feature branch
git checkout --theirs <path-to-file>
# Then you can
git add <path-to-file>
git rebase --continue