threads / discuss / 17743

Strange branch merging.

Subject: Strange branch merging.

## tl;dr

6 messages between Feb 12, 2009 and Feb 12, 2009.

replies: 5people: 3as markdown or json

Adam Panayis· Feb 12, 2009, 11:52 UTC · lore

Hi, I have just started using git and am having a problem with 2 branches appearing merged.

I have a local machine, on this I have 2 branches. The master and one named blah. My git repository is in the following location: /git/.git/

I have made changes to a file on the blah branch and committed these changes.

I checkout the master branch and as expected the changes are no longer there. I flip back to blah and I can see my changes. So far so good.

I then, on a remote machine use the pull command, the remote machine shows only the master branch as I have not asked it to pull blah. The command I use is as follows: git pull -v ssh://user@machine one/git/.git/

Once this is done I double check my branches and it shows I still only have the master. Perfect. However, when I check the file I edited on my local machine on the blah branch, the changes are there.

Am I fundamentally misunderstanding the correct usage of git? Is this result expected?

Thanks
Pieter de Bie· Feb 12, 2009, 12:27 UTC · re: Adam Panayis · lore

Re: Strange branch merging.

On Feb 12, 2009, at 11:52 AM, Adam Panayis wrote:
Show 6 quoted lines
> Once this is done I double check my branches and it shows I still  
> only have the master. Perfect. However, when I check the file I  
> edited on my local machine on the blah branch, the changes are there.
>
> Am I fundamentally misunderstanding the correct usage of git? Is  
> this result expected?
Yes, git pull will never change anything on the remote side. You  
should use 'git push' for that. But, you shouldn't push to repository  
with a working directory unless you know what you're doing -- read http://git.or.cz/gitwiki/GitFaq#non-bare 
  for that.
- Pieter
Adam Panayis· Feb 12, 2009, 12:40 UTC · re: Pieter de Bie · lore

Re: Strange branch merging.

Pieter, thanks for your advice.
I am never using the push command here.

Box A has branches master and blah. On Box B I just want to pull branch master.

When I try to do that on box B I get the master branch from box A but I get the changes made to branch blah on box A.

I do not understand why, on box B, the master branch is showing changes made to the blah branch on box A. (Yet on box A the changes to the blah branch are not shown in the master)

Apologies for my babbling.
Adam
Pieter de Bie wrote:
Show 16 quoted lines
>
> On Feb 12, 2009, at 11:52 AM, Adam Panayis wrote:
>
>> Once this is done I double check my branches and it shows I still 
>> only have the master. Perfect. However, when I check the file I 
>> edited on my local machine on the blah branch, the changes are there.
>>
>> Am I fundamentally misunderstanding the correct usage of git? Is this 
>> result expected?
>
> Yes, git pull will never change anything on the remote side. You 
> should use 'git push' for that. But, you shouldn't push to repository 
> with a working directory unless you know what you're doing -- read 
> http://git.or.cz/gitwiki/GitFaq#non-bare for that.
>
> - Pieter
Pieter de Bie· Feb 12, 2009, 12:42 UTC · re: Adam Panayis · lore

Re: Strange branch merging.

Hey,
[ Please don't top-post here, it makes following the discussion harder ]
On Feb 12, 2009, at 12:40 PM, Adam Panayis wrote:
Show 6 quoted lines
> When I try to do that on box B I get the master branch from box A  
> but I get the changes made to branch blah on box A.
>
> I do not understand why, on box B, the master branch is showing  
> changes made to the blah branch on box A. (Yet on box A the changes  
> to the blah branch are not shown in the master)

You probably pulled in the 'blah' branch rather than the 'master' branch because that was the branch that is checked out on box A. You can verify this by looking at 'git log' and see that the commit on the blah branch is also there. To pull the master branch, specify it explicitly, like this:

	git pull boxA:path/to/repo master
- Pieter
Adam Panayis· Feb 12, 2009, 12:59 UTC · re: Pieter de Bie · lore

Re: Strange branch merging.

Pieter de Bie wrote:
Show 23 quoted lines
> Hey,
>
> [ Please don't top-post here, it makes following the discussion harder ]
>
> On Feb 12, 2009, at 12:40 PM, Adam Panayis wrote:
>> When I try to do that on box B I get the master branch from box A but 
>> I get the changes made to branch blah on box A.
>>
>> I do not understand why, on box B, the master branch is showing 
>> changes made to the blah branch on box A. (Yet on box A the changes 
>> to the blah branch are not shown in the master)
>
> You probably pulled in the 'blah' branch rather than the 'master' 
> branch because that was
> the branch that is checked out on box A. You can verify this by 
> looking at 'git log' and
> see that the commit on the blah branch is also there. To pull the 
> master branch, specify
> it explicitly, like this:
>
>     git pull boxA:path/to/repo master
>
> - Pieter

Pieter, thank you very much. Looks like that is indeed the mistake I was making.

Sitaram Chamarty· Feb 12, 2009, 13:08 UTC · re: Adam Panayis · lore

Re: Strange branch merging.

On 2009-02-12, Adam Panayis <adam@movency.com> wrote:
Show 16 quoted lines
> I have a local machine, on this I have 2 branches. The master and one 
> named blah. My git repository is in the following location: /git/.git/
>
> I have made changes to a file on the blah branch and committed these 
> changes.
>
> I checkout the master branch and as expected the changes are no longer 
> there. I flip back to blah and I can see my changes. So far so good.
>
> I then, on a remote machine use the pull command, the remote machine 
> shows only the master branch as I have not asked it to pull blah. The 
> command I use is as follows: git pull -v ssh://user@machine one/git/.git/
>
> Once this is done I double check my branches and it shows I still only 
> have the master. Perfect. However, when I check the file I edited on my 
> local machine on the blah branch, the changes are there.

On the remote machine, your current branch was 'master'. When you did a 'git pull', whatever you did would affect this branch. Meanwhile, the currently checked-out branch on the other side was 'blah', which is what came in.

What you need to do is add the word 'master' to the 'git pull...' command you used. This will ensure that, regardless of what the currently checkedout branch on the sending side is, you will get the master branch.

← back to recent threads