repositorio - git remote add




¿Cómo elimino una sucursal de Git de forma local y remota? (20)

Las respuestas cortas

Si desea explicaciones más detalladas de los siguientes comandos, consulte las respuestas largas en la siguiente sección.

Eliminar una rama remota:

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin :<branch>          # Git versions older than 1.7.0

Eliminar una sucursal local:

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

Eliminar una rama local de seguimiento remoto:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p      # Shorter

La Respuesta Larga: hay 3 ramas diferentes para eliminar!

Cuando se trata de eliminar sucursales de forma local y remota, tenga en cuenta que hay 3 sucursales diferentes involucradas :

  1. La rama local X
  2. La rama de origen remoto X
  3. El origin/X rama de seguimiento remoto local que rastrea la rama X remota.

El cartel original utilizado.

git branch -rd origin/bugfix

que solo eliminó su origin/bugfix rama de seguimiento remoto local , y no la bugfix de bugfix rama remota real en el origin .

Para eliminar esa rama remota real , necesita

git push origin --delete bugfix

Detalles adicionales

Las siguientes secciones describen los detalles adicionales que se deben tener en cuenta al eliminar sus sucursales remotas y de seguimiento remoto.

Al pulsar para eliminar las ramas remotas también se eliminan las ramas de seguimiento remoto

Tenga en cuenta que eliminar la rama X remota de la línea de comando con un git push también eliminará el origin/X rama de seguimiento remoto local , por lo que no es necesario eliminar la rama de seguimiento remoto obsoleta con git fetch --prune o git fetch -p , aunque no dolería si lo hicieras de todos modos.

Puede verificar que el origin/X rama de seguimiento remoto también se eliminó ejecutando lo siguiente:

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

Poda el origen de la rama de seguimiento remoto local obsoleto / X

Si no eliminó su rama X remota de la línea de comando (como arriba), entonces su repositorio local seguirá conteniendo (una fuente ahora obsoleta) la rama origin/X seguimiento remoto. Esto puede suceder si elimina una sucursal remota directamente a través de la interfaz web de GitHub, por ejemplo.

Una forma típica de eliminar estas ramas de seguimiento remoto obsoletas (desde la versión 1.6.6 de Git) es simplemente ejecutar git fetch con --prune o --prune -p . Tenga en cuenta que esto elimina todas las ramas de seguimiento remoto locales obsoletas para cualquier rama remota que ya no existe en el control remoto :

git fetch origin --prune
git fetch origin -p # Shorter

Aquí está la cita relevante de las notas de la versión 1.6.6 (énfasis mío):

"git fetch" aprendió las opciones --multiple y --multiple , para ejecutar la búsqueda desde muchos repositorios, y la opción --prune para eliminar las ramas de seguimiento remotas que quedaron obsoletas. Esto hace que la "actualización remota de git" y la "poda remota de git" sean menos necesarias (aunque no hay un plan para eliminar la "actualización remota" ni la "poda remota").

Alternativa a la poda automática anterior para ramas obsoletas de seguimiento remoto

Como alternativa, en lugar de podar sus sucursales obsoletas de seguimiento remoto a través de git fetch -p , puede evitar realizar la operación adicional de la red simplemente eliminando manualmente las sucursales con las --remote o -r :

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

Ver también

Quiero eliminar una rama tanto localmente como en mi proyecto remoto en GitHub .

Intentos fallidos para eliminar la rama remota

$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).

$ git push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> origin/bugfix
Already up-to-date.

¿Qué debo hacer de manera diferente para eliminar con éxito los remotes/origin/bugfix branch tanto localmente como en GitHub?


Resumen ejecutivo

$ git push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

Tenga en cuenta que en la mayoría de los casos el nombre remoto es origin .

Eliminar sucursal local

Para eliminar la rama local use uno de los siguientes:

$ git branch -d branch_name
$ git branch -D branch_name

Nota: La opción -d es un alias para --delete , que solo elimina la rama si ya se ha fusionado completamente en su rama ascendente. También puede usar -D , que es un alias para --delete --force , que elimina la rama "independientemente de su estado fusionado". [Fuente: man git-branch ]

Delete Remote Branch [Actualizado el 8-Sep-2017]

A partir de Git v1.7.0 , puede eliminar una rama remota usando

$ git push <remote_name> --delete <branch_name>

lo que podría ser más fácil de recordar que

$ git push <remote_name> :<branch_name>

que se agregó en Git v1.5.0 "para eliminar una rama remota o una etiqueta".

A partir de Git v2.8.0 también puede usar git push con la opción -d como alias para --delete .

Por lo tanto, la versión de Git que haya instalado determinará si necesita usar la sintaxis más fácil o más difícil.

Eliminar rama remota [Respuesta original del 5 de enero de 2010]

Del capítulo 3 de Pro Git por Scott Chacon:

Eliminar sucursales remotas

Supongamos que ha terminado con una rama remota; digamos, usted y sus colaboradores han terminado con una función y la han combinado en la rama maestra de su control remoto (o en cualquier rama en la que se encuentre la línea de código estable). Puede eliminar una rama remota usando la sintaxis bastante obtusa git push [remotename] :[branch] . Si desea eliminar su rama serverfix del servidor, ejecute lo siguiente:

$ git push origin :serverfix
To [email protected]:schacon/simplegit.git
 - [deleted]         serverfix

Auge. No más sucursales en tu servidor. Es posible que desee escuchar esta página, porque necesitará ese comando, y probablemente olvidará la sintaxis. Una forma de recordar este comando es recordando la git push [remotename] [localbranch]:[remotebranch] que revisamos un poco antes. Si dejas de lado la parte [localbranch] , entonces básicamente estás diciendo: "No tomes nada de mi parte y haz que sea [remotebranch] ".

Emití git push origin :bugfix y funcionó a la perfección. Scott Chacón tenía razón: querría escuchar esa página (o prácticamente una oreja de perro al responder esto en ).

Entonces deberías ejecutar esto en otras máquinas.

git fetch --all --prune

para propagar los cambios.


Además de las otras respuestas, a menudo uso la herramienta git_remote_branch . Es una instalación adicional, pero le brinda una forma conveniente de interactuar con sucursales remotas. En este caso, para eliminar:

grb delete branch

Me parece que también uso los comandos de publish y track bastante frecuencia.


Ahora puedes hacerlo con la aplicación GitHub Desktop .

Después de lanzar la aplicación

  1. Haga clic en el proyecto que contiene la rama.
  2. Cambie a la rama que desea eliminar
  3. En el menú "Rama", seleccione "Anular publicación ..." para eliminar la bifurcación de los servidores de GitHub.
  4. En el menú "Sucursal", selecciona "Eliminar" nombre de sucursal "..." para eliminar la sucursal de tu máquina local (también conocida como la máquina en la que estás trabajando actualmente)

Consejo: Cuando borres ramas usando

git branch -d <branchname>    # deletes local branch

o

git push origin :<branchname> # deletes remote branch

solo se borran las referencias. A pesar de que la rama se elimina realmente en el control remoto, las referencias a ella todavía existen en los repositorios locales de los miembros de su equipo. Esto significa que para otros miembros del equipo, las ramas eliminadas aún son visibles cuando hacen una git branch -a .

Para resolver esto, los miembros de su equipo pueden podar las ramas eliminadas con

git remote prune <repository>

Esto suele ser git remote prune origin .


Desde enero de 2013, GitHub incluyó un botón Eliminar rama junto a cada rama en su página de "Ramas".

Publicación de blog relevante: crear y eliminar ramas


Esto es simple: simplemente ejecute el siguiente comando:

Para eliminar una sucursal de Git local y remotamente, primero elimine la sucursal local usando el comando:

git branch -d example

(aquí el example es el nombre de la rama)

Y después de eso elimine la rama remota usando el comando:

git push origin :example

Esto no funcionará si tiene una etiqueta con el mismo nombre que la rama en el control remoto:

$ git push origin :branch-or-tag-name
error: dst refspec branch-or-tag-name matches more than one.
error: failed to push some refs to '[email protected]:SomeName/some-repo.git'

En ese caso, debe especificar que desea eliminar la rama, no la etiqueta:

git push origin :refs/heads/branch-or-tag-name

Del mismo modo, para eliminar la etiqueta en lugar de la rama que utilizarías:

git push origin :refs/tags/branch-or-tag-name

Mashup de todas las otras respuestas. Requiere Ruby 1.9.3+, probado solo en OS X.

Llame a este archivo git-remove , conviértalo en ejecutable y póngalo en su ruta. Luego usa, por ejemplo, git remove temp .

#!/usr/bin/env ruby
require 'io/console'

if __FILE__ == $0
      branch_name = ARGV[0] if (ARGV[0])
      print "Press Y to force delete local and remote branch #{branch_name}..."
    response = STDIN.getch
    if ['Y', 'y', 'yes'].include?(response)
      puts "\nContinuing."
      `git branch -D #{branch_name}`
      `git branch -D -r origin/#{branch_name}`
      `git push origin --delete #{branch_name}` 
    else
      puts "\nQuitting."
    end
end

Me cansé de buscar en Google para esta respuesta, por lo que adopté un enfoque similar a la respuesta que publicaba anteriormente.

Agregué lo siguiente a mi perfil de Bash:

function gitdelete(){
    git push origin --delete $1
    git branch -D $1
}

Luego, cada vez que termino con una rama (fusionada en master , por ejemplo) ejecuto lo siguiente en mi terminal:

gitdelete my-branch-name

... que luego elimina my-branch-name desde el origin , así como a nivel local.


Otro enfoque es

git push --prune origin

ADVERTENCIA: Esto eliminará todas las ramas remotas que no existen localmente. O más ampliamente,

git push --mirror

efectivamente hará que el repositorio remoto se vea como la copia local del repositorio (los jefes locales, los controles remotos y las etiquetas se reflejan en el control remoto).


Para eliminar su sucursal localmente y remotamente

  • Checkout to master branch - git checkout master

  • Elimine su rama remota - git push origin --delete <branch-name>

  • Elimine su sucursal local - rama de git branch --delete <branch-name> - git branch --delete <branch-name>


Si desea eliminar una rama, primero realice el proceso de pago en la rama que no sea la rama que desea eliminar.

git checkout other_than_branch_to_be_deleted

Eliminando la sucursal local:

git branch -D branch_to_be_deleted

Eliminando la rama remota:

git push origin --delete branch_to_be_deleted

Simplemente diga:

git branch -d <branch-name>
git push origin :<branch-name>

También puedes hacer esto usando git remote prune origin :

$ git remote prune origin
Pruning origin
URL: [email protected]/yourrepo.git
 * [pruned] origin/some-branchs

Se poda y elimina las ramas de seguimiento remoto de una lista de git branch -r .


Uso lo siguiente en mi configuración de Bash :

alias git-shoot="git push origin --delete"

Entonces puedes llamar:

git-shoot branchname

Eliminar localmente:

Para eliminar una rama local, puede utilizar:

git branch -d branch_name 

Para eliminar una rama por la fuerza, use -D lugar de -d .

git branch -D branch_name

Eliminar de forma remota:

Hay dos opciones:

git push origin :branchname  

git push origin --delete branchname 

Le sugiero que utilice la segunda forma, ya que es más intuitivo.


Para eliminar localmente - (Normal),

git branch -d my_branch

Si su sucursal está en proceso de rebasar / fusionar y eso no se hizo correctamente significa que recibirá un Rebase/Merge in progress error Rebase/Merge in progress por lo que, en ese caso, no podrá eliminar su sucursal.

Entonces, ya sea su necesidad de resolver la reorganización / fusión, de lo contrario puede forzar la eliminación usando,

git branch -D my_branch

Para borrar en remoto:

git push --delete origin my_branch

puede hacer lo mismo usando,

git push origin :my_branch   # easy to remember both will do the same.

Representación grafica,


git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

git push origin --delete branchName

es más fácil de recordar que

git push origin :branchName




git-remote