
danieltalsky
Cloné un repositorio usando el
git clone -b <branch name> --single-branch <github url> <target directory>
Esto clonó SOLO esta rama, pero ahora quiero cambiar a la maestra y otras ramas. ¿Hay alguna forma, además de borrarlo y comenzar de nuevo a clonar el resto del repositorio, de que pueda deshacer la preferencia –single-branch?

sarahodne
Puedes decirle a Git que extraiga todas las ramas de esta manera:
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
si miras adentro .git/config
se verá algo como esto:
[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
Comparé esto con un clon completo y vi que la única diferencia era “buscar” en [remote "origin"]
.
Nota: estoy ejecutando Git versión 1.8.2. Las opciones de configuración pueden haber cambiado si está ejecutando una versión anterior de Git. Si mis comandos no funcionan, entonces recomendaría revisar .git/config
a ver si ves algo parecido.
Si desea agregar una sola sucursal, puede hacer lo siguiente:
git remote set-branches --add origin [remote-branch]
git fetch origin [remote-branch]:[local-branch]
Funciona con git versión 1.9.1
Para agregar otra sucursal remota a mi repositorio local que fue clonado usando --single-branch
lo siguiente funciona para mí:
git remote set-branches --add origin [remote-branch]
git fetch
git checkout [remote-branch]
También puede utilizar comodines para [remote-branch]
p.ej
git remote set-branches --add origin release-1.*
git fetch
git checkout release-1.5
Esto funciona usando git versión 2.21.1. Otras respuestas sugiriendo hacer git fetch origin [remote-branch]:[local-branch]
no funcionó ya que crea la rama local en un estado sin seguimiento. al correr git pull
primero intentó fusionar todas las confirmaciones de la rama remota a mi local una vez más.
Para mí funcionó:
git remote remove origin
git remote add origin https://*<yourPath>*.git
git fetch
¿Simplemente agregue el repositorio original como un nuevo control remoto y trabaje desde allí?
git remote add path/to/myrepo myNewOrigin
git fetch myNewOrigin
Incluso puede eliminar su control remoto de ‘origen’ actual y cambiar el nombre de ‘myNewOrigin’ a ‘origin’ si lo desea.
Desde allí puede extraer/fusionar/reorganizar.

trueboroda
solo cambia .git/config
archivo de su repositorio local, línea fetch
de [remote origin] section
.
Antes de algo así
[remote "origin"]
url = https://github.com/owner/repo.git
fetch = +refs/heads/master:refs/remotes/origin/master
despues sera asi
[remote "origin"]
url = https://github.com/owner/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*

humano
Inicialmente apliqué la respuesta de Dominik Pawlak y funcionó. Pero no pude realizar más cambios después de enviar más código a mi nueva rama.
Hay otra forma de resetear single-branch
por completo, que no se ha mencionado aquí:
git remote remove origin
git remote add origin git@gitlab.com:{yourProject}/{yourRepo}.git
git branch --set-upstream-to=origin/{yourBranch} {yourBranch}
git pull
Esto restablece todo al original.