primero vamos:
- Una rama es una "referencia" en el espacio de nombres
refs/heads
. Solo ls .git/refs/heads
y cat
los archivos para ver lo que quiero decir.
- Una etiqueta es "ref" en el espacio de nombre
refs/tags
. Solo ls .git/refs/tags
para verlo usted mismo.
HEAD
simplemente otro "ref", pero es especial en el aspecto de que puede ser "simbólico". Solo cat .git/HEAD
y vea lo que dice.
A push
operación opera en un "ref", y el "mapeo" predeterminado conserva el espacio de nombres. Esto significa que cuando presiono una rama, aparecerá como una rama en el control remoto; cuando presiono una etiqueta, aparecerá como una etiqueta en el control remoto. Considere los siguientes escenarios:
Quiero empujar la etiqueta moo
y hacer que parezca como una rama en el servidor remoto (sí, estoy esencialmente "convertir" una etiqueta en una rama). Esta es la forma en que lo haré:
git push origin moo:refs/heads/moo
Git necesita una forma de diferenciar entre el avance rápido y no empuja y siguientes, por lo que las personas no terminan sobrescribir el trabajo de otras personas por error. Digamos que quiero presionar las ramas master
, next
y pu
, de las cuales solo pu
es no-ff. Esta es la forma en que lo haré (recordamos que debe suministrar una asignación explícita cuando se está utilizando +
):
git push origin master next +pu:pu
Ahora, vamos a llegar a su pregunta. Desea insertar su HEAD
para que aparezca en el espacio de nombres refs/heads
en el control remoto como una rama llamada "ignore-netbeans-config". Si esta rama no existía antes, o si está sobrescribiendo algunos commits en ella (es decir, push no-ff), use +
. De lo contrario, no. Resultado final:
git push origin +HEAD:refs/heads/ignore-netbeans-config
TL; DR versión: git push origin +HEAD:refs/heads/ignore-netbeans-config
Buena pregunta! Por supuesto, si puede continuar editando aquí, querrá seguir adelante y crear una sucursal para estar seguro. – Cascabel