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.
Best Answer
Update: Using Git Switch
All of the information written below was accurate, but a new command,
git switch
has been added that simplifies the effort.If
daves_branch
exists on the remote repository, but not on your local branch, you can simply type:Since you do not have the branch locally, this will automatically make
switch
look on the remote repo. It will then also automatically set up remote branch tracking.Note that if
daves_branch
doesn't exist locally you'll need togit fetch
first before usingswitch
.Original Post
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:
--track
is shorthand forgit 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:
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):
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