
escalopo
¿Por qué Git usa
git push <remote> :<branch>
como en
git push origin :featureA
para eliminar la rama featureA
desde el servidor remoto?
Estoy interesado en por qué se usaron los dos puntos como indicador de eliminación.
es tan diferente de git branch -d <localbranch>
.
¿Por qué no hacemos algo como
git branch -d --remote origin <branchname>
¿O hay un significado más profundo detrás del símbolo de dos puntos que no conocía?
No es el significado de la :
per se, sino lo que está presente, o más bien ausente ante ella.
El formato refspec es
<+><source>:<destination>
(opcional + para avance no rápido)
Así que cuando haces algo como git push origin :featureA
está especificando una referencia de fuente vacía y básicamente haciendo que el destino esté “vacío” o eliminándolo.
PD: Tenga en cuenta que la refspec de :
o nada no significa empujar nada a nada sin embargo. Hace que git empuje ramas “coincidentes”: para cada rama que existe en el lado local, el lado remoto se actualiza si ya existe una rama con el mismo nombre en el lado remoto.

ryan stewart
Los dos puntos no son una “bandera de eliminación”. Tenga en cuenta que empujar git y tirar de git ambos aceptan cero o más refspecs como su(s) argumento(s) final(es). Ahora Lea acerca de las especificaciones de referencia. Dos puntos separan el origen del destino en una refspec. El comando git push origin :foo
tiene una fuente vacía y esencialmente dice “empujar ninguna cosa to branch foo of origin”, o, en otras palabras, “hacer que branch foo on origin no exista”.
Para eliminar sucursales remotas, ahora hay una sintaxis más bonita
git push origin --delete foobar
– quetzalcóatl
5 de noviembre de 2015 a las 13:56