Skip to contentSkip to conversation

Strange branch merging.

DISCUSSION Adam Panayis 3 participants 6 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw
Quoted 3 lines · Adam Panayis

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

#2 lore raw

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

Quoted 10 lines · Pieter de Bie
Quoted 3 lines · Adam Panayis

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

#3 lore raw

Hey,

[ Please don't top-post here, it makes following the discussion harder ]

Quoted 3 lines · Adam Panayis

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

#4 lore raw
Quoted 9 lines · Pieter de Bie

Hey,

[ Please don't top-post here, it makes following the discussion harder ]

Quoted 3 lines · Adam Panayis

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)

Quoted 8 lines

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.

#5 lore raw
In reply to Adam Panayis
Quoted 9 lines · Adam Panayis

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.

Quoted 7 lines

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.