How do I "undo" a --single-branch clone?
For me worked:
git remote remove origin
git remote add origin https://*<yourPath>*.git
git fetch
If you want to add a single branch, you can do the following:
git remote set-branches --add origin [remote-branch]
git fetch origin [remote-branch]:[local-branch]
Works with git version 1.9.1
You can tell Git to pull all branches like this:
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
If you look in .git/config
, it'll look something like this:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "origin"]
url = https://github.com/owner/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
I compared this to a full clone, and saw that the only difference was the "fetch" under [remote "origin"]
.
Note: I'm running Git version 1.8.2. The config options may have changed if you're running an older version of Git. If my commands don't work, then I'd recommend looking through .git/config
to see if you can see something similar.
To add another remote branch to my local repository that was cloned using --single-branch
, the following works for me:
git remote set-branches --add origin [remote-branch]
git fetch
git checkout [remote-branch]
You can also use wildcards for [remote-branch]
, e.g.
git remote set-branches --add origin release-1.*
git fetch
git checkout release-1.5
This works using git version 2.21.1. Other answers suggesting to do git fetch origin [remote-branch]:[local-branch]
did not work as it creates the local branch in an untracked state. When running git pull
it first tried to merge all the commits of the remote branch to my local one once again.