To view your remote branches, simply pass the -r flag to the git branch command. You can inspect remote branches with the usual git checkout and git log commands. If you approve the changes a remote branch contains, you can merge it into a local branch with a normal git merge .
Push a new Git branch to a remote repoClone the remote Git repo locally. Create a new branch with the branch, switch or checkout commands. Perform a git push with the –set-upstream option to set the remote repo for the new branch. Continue to perform Git commits locally on the new branch.
First, double check that the branch has been actually pushed remotely, by using the command git ls-remote origin
. If the new branch appears in the output, try and give the command git fetch
: it should download the branch references from the remote repository.
If your remote branch still does not appear, double check (in the ls-remote
output) what is the branch name on the remote and, specifically, if it begins with refs/heads/
. This is because, by default, the value of remote.<name>.fetch
is:
+refs/heads/*:refs/remotes/origin/*
so that only the remote references whose name starts with refs/heads/
will be mapped locally as remote-tracking references under refs/remotes/origin/
(i.e., they will become remote-tracking branches)
Check whether .git/config
contains
[remote "origin"]
url = …
fetch = +refs/heads/master:refs/remotes/origin/master
If so, change it to say
[remote "origin"]
url = …
fetch = +refs/heads/*:refs/remotes/origin/*
Then you should be able to use it:
$ git fetch
remote: Counting objects: …
remote: Compressing objects: ..
Unpacking objects: …
remote: …
From …
* [new branch] branchname -> origin/branchname
$ git checkout branchname
Branch branchname set up to track remote branch branchname from origin.
Switched to a new branch 'branchname'
The simplest answer is:
git fetch origin <branch_name>
Let's say we are searching for release/1.0.5
When git fetch --all
is not working and that you cannot see the remote branch and git branch -r
not show this specific branch.
1. Print all refs from remote (branches, tags, ...):
git ls-remote origin
Should show you remote branch you are searching for.
e51c80fc0e03abeb2379327d85ceca3ca7bc3ee5 refs/heads/fix/PROJECT-352
179b545ac9dab49f85cecb5aca0d85cec8fb152d refs/heads/fix/PROJECT-5
e850a29846ee1ecc9561f7717205c5f2d78a992b refs/heads/master
ab4539faa42777bf98fb8785cec654f46f858d2a refs/heads/release/1.0.5
dee135fb65685cec287c99b9d195d92441a60c2d refs/heads/release/1.0.4
36e385cec9b639560d1d8b093034ed16a402c855 refs/heads/release/1.0
d80c1a52012985cec2f191a660341d8b7dd91deb refs/tags/v1.0
The new branch release/1.0.5
appears in the output.
2. Force fetching a remote branch:
git fetch origin <name_branch>:<name_branch>
$ git fetch origin release/1.0.5:release/1.0.5
remote: Enumerating objects: 385, done.
remote: Counting objects: 100% (313/313), done.
remote: Compressing objects: 100% (160/160), done.
Receiving objects: 100% (231/231), 21.02 KiB | 1.05 MiB/s, done.
Resolving deltas: 100% (98/98), completed with 42 local objects.
From http://git.repo:8080/projects/projectX
* [new branch] release/1.0.5 -> release/1.0.5
Now you have also the refs locally, you can checkout (or whatever) this branch.
Job done!
Doing a git remote update will also update the list of branches available from the remote repository.
If you are using TortoiseGit, as of version 1.8.3.0, you can do "Git -> Sync" and there will be a "Remote Update" button in the lower left of the window that appears. Click that. Then you should be able to do "Git -> Switch/Checkout" and have the new remote branch appear in the dropdown of branches you can select.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With