Strange branch merging.
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
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
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
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
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.
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.