ver remote remotas ramas rama comandos cambiar git branch git-track

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í que origin/master es una rama de seguimiento remoto para master en el repositorio de origin

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 el upstream de la rama actual haz:

$ 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 )

source


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.