¿Cómo se deja de rastrear una twig remota en Git?

¿Cómo se deja de rastrear una twig remota en Git ?

Estoy pidiendo dejar de rastrear porque en mi caso concreto, quiero eliminar la twig local, pero no la remota. Eliminar la local y presionar la eliminación a control remoto también eliminará la twig remota:

  • ¿Cómo elimino una twig de Git localmente y en GitHub?

¿Puedo hacer git branch -d the_branch , y no se propagará cuando más tarde git push ?

¿Se propagará solo si tuviera que ejecutar git push origin :the_branch más adelante?

Como se menciona en la respuesta de Yoshua Wuyts , usando git branch :

 git branch --unset-upstream 

Otras opciones:

No es necesario que elimine su sucursal local.

Simplemente elimine su sucursal de seguimiento remoto:

 git branch -d -r origin/<remote branch name> 

(¡Esto no borrará la twig en el repository remoto !)

Ver " Tener dificultades para entender git-fetch "

no existe tal concepto de twigles de rastreo local, solo twigles de rastreo remotos.
Entonces origin/master es una twig de seguimiento remoto para el master en el repository de origin

Como se menciona en la respuesta de Dobes Vandermeer , también debe restablecer la configuration asociada a la sucursal local :

 git config --unset branch.<branch>.remote git config --unset branch.<branch>.merge 

Elimine la información de <branchname> ascendente para <branchname> .
Si no se especifica ninguna twig, se establece de manera pnetworkingeterminada en la twig actual.

(Git 1.8+, octubre de 2012, commit b84869e por Carlos Martín Nieto ( carlosmn ) )

Eso hará que cualquier push / pull desconozca por completo el origin/<remote branch name> .

Para eliminar el flujo ascendente de la twig actual, haga lo siguiente:

 $ git branch --unset-upstream 

Esto está disponible para Git v.1.8.0 o más reciente. (Fuentes: 1.7.9 ref , 1.8.0 ref )

fuente

Para eliminar la asociación entre la ejecución local y remota de la sucursal:

 git config --unset branch.<local-branch-name>.remote git config --unset branch.<local-branch-name>.merge 

Opcionalmente, elimine la twig local después si no la necesita:

 git branch -d <branch> 

Esto no eliminará la twig remota.

La forma más sencilla es editar .git/config

Aquí hay un file de ejemplo

 [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true [remote "origin"] url = git@example.com:repo-name fetch = +refs/heads/*:refs/remotes/origin/* [branch "test1"] remote = origin merge = refs/heads/test1 [branch "master"] remote = origin merge = refs/heads/master 

Eliminar la línea merge = refs/heads/test1 en la sección de la twig test1

Puede eliminar la twig de seguimiento remoto usando

 git branch -d -r origin/<remote branch name> 

como VonC menciona arriba. Sin embargo, si conserva su copy local de la twig, git push aún intentará presionar esa twig (lo que podría darle un error de avance rápido como lo hizo con ruffin ). Esto se debe a que config push.default pnetworkingeterminada a la matching que significa:

coincidencia: presione todas las twigs correspondientes. Todas las twigs que tienen el mismo nombre en ambos extremos se consideran coincidentes. Este es el pnetworkingeterminado.

(ver http://git-scm.com/docs/git-config bajo push.default )

Viendo que probablemente esto no sea lo que querías cuando push.default twig de seguimiento remoto, puedes establecer push.default en upstream (o tracking si tienes git <1.7.4.3)

aguas arriba: empuja la twig actual a su twig aguas arriba.

utilizando

 git config push.default upstream 

y git dejará de intentar empujar las twigs que "dejaste de rastrear".

Nota: la solución más simple sería cambiar el nombre de su twig local a otra cosa. Eso eliminaría cierto potencial de confusión, también.

Esta no es una respuesta a la pregunta, pero no pude encontrar la forma de get un formatting de código decente en un comentario anterior … por lo tanto, mi comentario es auto-down-reputation-be-damned.

Tengo la receta submutada por @Dobes en una input elegante de shmancy [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 

Aquí hay una línea para eliminar todas las twigs de seguimiento remoto que coinciden con un patrón:

git branch -rd $(git branch -a | grep '{pattern}' | cut -d'/' -f2-10 | xargs)

La forma más sencilla de hacerlo es borrar la twig de forma remota y luego usar:

git fetch –prune (también conocido como git fetch -p)