My colleague and I are working on the same repository. We've branched it into two branches, each technically for different projects, but they have similarities, so we'll sometimes want to commit back to the *master
from the branch
.
However, I have the branch
. How can my colleague pull that branch specifically?
A git clone
of the repository does not seem to create the branches locally for him, though I can see them live on unfuddle after a push on my end.
Also, when I originally made the branch, I did -b checkout
. Does that make much difference?
$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master
$ git fetch origin discover
$ git checkout discover
These are the commands I ran. But it definitely is not working.
I want to be able to check out that branch and then push and commit back just the branches changes from various collaborators or workstations.
You need to create a local branch that tracks a remote branch. The following command will create a local branch named daves_branch, tracking the remote branch origin/daves_branch. When you push your changes the remote branch will be updated.
For most recent versions of Git:
git checkout --track origin/daves_branch
--track
is shorthand for git checkout -b [branch] [remotename]/[branch]
where [remotename] is origin in this case and [branch] is twice the same, daves_branch in this case.
For Git 1.5.6.5 you needed this:
git checkout --track -b daves_branch origin/daves_branch
For Git 1.7.2.3 and higher, this is enough (it might have started earlier, but this is the earliest confirmation I could find quickly):
git checkout daves_branch
Note that with recent Git versions, this command will not create a local branch and will put you in a 'detached HEAD' state. If you want a local branch, use the --track
option.
Full details are here: 3.5 Git Branching - Remote Branches, Tracking Branches