tags:

views:

44

answers:

2

Here's my scenario:

I'm working on fixing bugs in file1 in a local branch. My coworker is in his own local branch, merging file1 into file2 in a refactor. He finishes his work and merges back into master and pushes. Now file1 no longer exists in the HEAD.

When I do a pull and try to merge my file1 changes back into master, what will happen? Is git smart enough to account for this or will I have to merge my changes manually?

A: 

It depends.... was there a git mv file1 file2 did git recognize this as a rename? if it did then it might recognize this... otherwise it will probably just try to create a new file1. you may have to do some manual merge intervention or a post merge patch. Also this is git TIAS worst case scenario you roll back the merge before pushing.

xenoterracide
It doesn't matter whether there was a `git mv`. Either git recognizes it as a rename or it doesn't.
Jefromi
+4  A: 

First, you don't merge files, you merge revisions (or rather lines of development).

Second, git uses similarity based heuristic to detect renames, so if file2 is similar enough to file1, then git should automatically merge your and his changes into file2. If not, you would get 'CONFLICT(modify/delete)' (I think) you would have to resolve manually.

Jakub Narębski