threads / discuss / 13828

git mv + git pull issue

Subject: git mv + git pull issue

## tl;dr

3 messages between Jun 6, 2008 and Jun 9, 2008.

replies: 2people: 2as markdown or json

Christoph Duelli· Jun 6, 2008, 07:57 UTC · lore

"git mv" followed by a git pull (before commiting) the move, loses the "remove" part of the move. This can lead to dupes in the repository.

Consider the following steps:

# create a new repo with a file in it mkdir gitmv cd gitmv/ git init touch afile git add afile git commit -a -m"first"

# clone it cd .. git clone gitmv/ gitmv-clone cd gitmv-clone/ touch other git add other git commit -a -m"other"

cd ../gitmv git mv afile newname # do not commit # now: afile is not in the directory anymore # oh, I need those changes my colleague made... git pull ../gitmv-clone/ # now: both(!) afile and newname are in the directory

If I commit now (and overlook this) I will have 2 copies of this file in my repository which is not usually what I want.

Suggestion:
+ if the file was not touched in the pulled commits, leave it (missing)
+ if it was touched: this should be a conflict
Best regards
-- 
Christoph Duelli
Johannes Schindelin· Jun 6, 2008, 15:40 UTC · re: Christoph Duelli · lore

Re: git mv + git pull issue

Hi,
On Fri, 6 Jun 2008, Christoph Duelli wrote:
Show 7 quoted lines
> cd ../gitmv
> git mv afile newname
> # do not commit
> # now: afile is not in the directory anymore
> # oh, I need those changes my colleague made...
> git pull ../gitmv-clone/
> # now: both(!) afile and newname are in the directory

What is so surprising there? We _always_ recommend to commit before pulling.

Ciao, Dscho

Christoph Duelli· Jun 9, 2008, 08:45 UTC · re: Johannes Schindelin · lore

Re: git mv + git pull issue

Johannes Schindelin schrieb:
Show 14 quoted lines
> Hi,
> 
> On Fri, 6 Jun 2008, Christoph Duelli wrote:
> 
>> cd ../gitmv
>> git mv afile newname
>> # do not commit
>> # now: afile is not in the directory anymore
>> # oh, I need those changes my colleague made...
>> git pull ../gitmv-clone/
>> # now: both(!) afile and newname are in the directory
> 
> What is so surprising there?  We _always_ recommend to commit before 
> pulling.

Well, when I modify a file, and pull afterwards: my 'modification' is never lost (the pull might fail, though). If we consider the removal of a file as a kind of modification, one would expect a similar behaviour.

I do agree that this is not (nec.) a bug, still I thought it worthwhile to bring the matter up. In our repository we get duplicates now and then because of it.

Regards
-- 
Christoph Duelli

← back to recent threads