I still don't have a confirmed way to reproduce this but in case this is some well known issue, I'll ask it anyway. What happens is that git often creates conflicts like this:
<<<<<<< HEAD
} // action_do_add
=======
} // action_do_add
...lots of code here...
>>>>>>> some_branch
So instead of noticing that I simply added a new piece of code, git thinks that I modified the whole line instead. This sometimes happens in the middle of the file but most often - in the end of the file. My guess is that it might have something to do with end-of-line characters but I yet have to run tests to confirm that. Has anyone had the same issue and if yes, how do you fix it?
Git can handle most merges on its own with automatic merging features. A conflict arises when two separate branches have made edits to the same line in a file, or when a file has been deleted in one branch but edited in the other. Conflicts will most likely happen when working in a team environment.
Note the list of conflicted files with: git status (under Unmerged paths section). Solve the conflicts separately for each file by one of the following approaches: Use GUI to solve the conflicts: git mergetool (the easiest way). To accept remote/other version, use: git checkout --theirs path/file .
When merging, git checks differences in context to the surrounding lines. Consider this code:
def a
do_something_a
end
def b
do_something_b
end
def c
do_something_c
end
When one branch changes something in method a
(or deletes it), and another branch changes something in method c
(or deletes it), you still have the context of method b
for both diffs. That's why the changes will probably merge without conflicts.
However, if you have something like this:
def a
do_something_a
end
def c
do_something_c
end
you will most likely end up with conflicts when editing one method in one branch and the other in another branch because you broke the corresponding context of the diff in the other branch.
That's also why it happens more often at the end of the file—because there is just the context above the diff, but none below it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With