Conflict resolving¶
After making git merge
or git cherry-pick
there could be conflicts, because some commits try to make changes on the same line. So, you need to choose which change shall be use. It could be one variant, both variants or new variant.
What to do if you got conflicts:
Check status
git status
Resolve conflicts:
either edit files manually:
- open file with conflicts
- search for
<<<
or>>>
and delete obsolete variant or make a mix of both variants.
or use following commands, if you are sure which version should be kept
git checkout --ours -- <file> # or git checkout --theirs -- <file>
Mark files as resolved via
git add
commandDone.
git push
Deleted files¶
Sometimes, changes can be conflicted because files are not exist anymore in ours version, but updated in theirs (or vice versa). In that case execute the code below in order to ignore such changes:
git status | grep 'deleted by us' | awk '{print $4}' | xargs git rm
git status | grep 'deleted by them' | awk '{print $4}' | xargs git rm
Notes¶
- It’s important, that on resolving conflict stage you should not make any updates inside conflicting lines. You can only choose which lines should be kept and which deleted. E.g. if you resolve conflicts due to porting some updatefeature from one odoo version (e.g. 8.0) to another (e.g. 9.0), then such changes some time must be tuned to make updatefeature work on target odoo version. But you have to make such tuning on a new commit only. Make mergingchery-picking commits be only about merging and chery-picking, make porting commits separately.
- If you don’t have conflicts, you do not need to make commit after cherry-pick because it creates commit by its own.