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á así:
[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/master:refs/remotes/origin/master
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
Comparé esto con un clon completo y vi que la única diferencia era el "buscar" debajo [remote "origin"]
.
Nota: estoy ejecutando Git versión 1.8.2. Es posible que las opciones de configuración hayan cambiado si está ejecutando una versión anterior de Git. Si mis comandos no funcionan, le recomiendo que revise .git/config
para ver si puede ver algo similar.
git
herramienta de línea de comandos es increíblemente poderosa (de hecho, la mayoría de los comandos se implementan en términos de otros comandos), por lo que puede hacer muchas cosas con ella una vez que comprenda cómo está distribuido el repositorio (básicamente, cómo funciona la.git
carpeta ).git show-ref tags
aún falla.git clone --depth=1 --branch branchname [email protected]:foobar/repo.git destinationpath
Si desea agregar una sola rama, puede hacer lo siguiente:
Funciona con git versión 1.9.1
fuente
fetch =
líneas a .git / config, muy útil cuando desea cambiar entre dos ramas en el control remoto pero no buscar un montón de otras ramas. ¡Gracias!Para agregar otra rama remota a mi repositorio local que se clonó usando
--single-branch
, lo siguiente funciona para mí:También puede utilizar comodines para
[remote-branch]
, por ejemplo,Esto funciona con la versión 2.21.1 de git . Otras respuestas que sugieren hacer
git fetch origin [remote-branch]:[local-branch]
no funcionaron, ya que crea la sucursal local en un estado sin seguimiento. Al ejecutarlogit pull
, primero intenté fusionar todas las confirmaciones de la rama remota con la local una vez más.fuente
¿Simplemente agregue el repositorio original como un nuevo control remoto y trabaje desde allí?
Incluso puede eliminar su control remoto actual de 'origen' y cambiar el nombre de 'myNewOrigin' a 'origen' si lo desea.
Desde allí puede extraer / fusionar / rebase.
fuente
Simplemente cambie el
.git/config
archivo de su repositorio local, líneafetch
de[remote origin] section
.Antes de algo como esto
Después de que sea así
fuente
Inicialmente apliqué la respuesta de Dominik Pawlak y funcionó. Pero no pude realizar más cambios, después de que comprometí más código en mi nueva rama.
Hay otra forma de restablecer por
single-branch
completo, que no se ha mencionado aquí:Esto restablece todo al original.
fuente
Para mi funcionó:
fuente