remotas - git remote
¿Cómo dejar de rastrear una sucursal remota en Git? (8)
¿Cómo dejar de rastrear una sucursal remota en Git ?
Solicito detener el seguimiento porque, en mi caso concreto, quiero eliminar la sucursal local, pero no la remota. Eliminar el local y empujar el borrado a remoto eliminará también la rama remota:
- ¿Cómo elimino una sucursal de Git localmente y en GitHub?
¿Puedo hacer git branch -d the_branch
, y no se propagará cuando más adelante git push
?
¿Se propagará solo si ejecutara git push origin :the_branch
más adelante?
Aquí hay una sola línea para eliminar todas las ramas de seguimiento remoto que coincidan con un patrón:
git branch -rd $(git branch -a | grep ''{pattern}'' | cut -d''/'' -f2-10 | xargs)
Como se mencionó en la answer Yoshua Wuyts , usando git branch
:
git branch --unset-upstream
Otras opciones:
No tienes que eliminar tu sucursal local.
Simplemente elimine su rama de seguimiento remoto:
git branch -d -r origin/<remote branch name>
(¡Esto no borrará la rama en el repositorio remoto !)
Consulte " Tener dificultades para entender git-fetch "
No existe tal concepto de sucursales locales de seguimiento, solo sucursales de seguimiento remoto.
Así queorigin/master
es una rama de seguimiento remoto paramaster
en el repositorio deorigin
Como se mencionó en la respuesta de Dobes Vandermeer , también debe restablecer la configuración asociada a la sucursal local :
git config --unset branch.<branch>.remote
git config --unset branch.<branch>.merge
Elimine la información anterior para
<branchname>
.
Si no se especifica ninguna rama, por defecto es la rama actual.
(git 1.8+, octubre de 2012, commit b84869e por Carlos Martín Nieto ( carlosmn
) )
Eso hará que cualquier push / pull ignore completamente el origin/<remote branch name>
.
Esta no es una respuesta a la pregunta, pero no pude encontrar la forma de obtener un formato de código decente en un comentario anterior ... así que mi reputación es un problema.
Tengo la receta enviada por @Dobes en una entrada elegante [alias] en mi .gitconfig:
# to untrack a local branch when I can''t remember ''git config --unset''
cbr = "!f(){ git symbolic-ref -q HEAD 2>/dev/null | sed -e ''s|refs/heads/||''; }; f"
bruntrack = "!f(){ br=${1:-`git cbr`}; /
rm=`git config --get branch.$br.remote`; /
tr=`git config --get branch.$br.merge`; /
[ $rm:$tr = : ] && echo /"# untrack: not a tracking branch: $br/" && return 1; /
git config --unset branch.$br.remote; git config --unset branch.$br.merge; /
echo /"# untrack: branch $br no longer tracking $rm:$tr/"; return 0; }; f"
Entonces solo puedo correr
$ git bruntrack branchname
La forma más sencilla de hacerlo es eliminar la rama de forma remota y luego usar:
git fetch --prune (también conocido como git fetch -p)
La forma más sencilla es editar .git/config
Aquí hay un archivo de ejemplo.
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[remote "origin"]
url = [email protected]:repo-name
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "test1"]
remote = origin
merge = refs/heads/test1
[branch "master"]
remote = origin
merge = refs/heads/master
Elimine la línea merge = refs/heads/test1
en la sección de rama test1
Para eliminar la asociación entre la ejecución de rama local y remota:
git config --unset branch.<local-branch-name>.remote
git config --unset branch.<local-branch-name>.merge
Opcionalmente, elimine la sucursal local si no la necesita:
git branch -d <branch>
Esto no eliminará la rama remota.
Puede eliminar la rama de seguimiento remoto usando
git branch -d -r origin/<remote branch name>
como lo menciona VonC arriba. Sin embargo, si conservas tu copia local de la sucursal, git push
intentará empujarla (lo que podría darte un error de no avance rápido, como sucedió con la rufina ). Esto se debe a que, por defecto, la configuración push.default
matching
que significa:
haciendo coincidir - empuja todas las ramas que coincidan Se considera que todas las ramas que tienen el mismo nombre en ambos extremos coinciden. Este es el valor predeterminado.
(consulte http://git-scm.com/docs/git-config en push.default
)
Al ver que esto probablemente no es lo que deseaba cuando eliminó la rama de seguimiento remoto, puede configurar push.default
a upstream
(o tracking
si tiene git <1.7.4.3)
aguas arriba - empuje la rama actual a su rama aguas arriba.
utilizando
git config push.default upstream
y git dejará de intentar empujar las ramas que has "dejado de rastrear".
Nota: la solución más sencilla sería simplemente cambiar el nombre de su sucursal local a otra cosa. Eso eliminaría también algún potencial de confusión.