una tag remota rama eliminar crear git git-branch

git - tag - eliminar una rama en bitbucket



Eliminar una rama mal llamada git (6)

Sé que esto no es estrictamente una cuestión de programación, pero está relacionado con git. Accidentalmente he creado una rama en git llamada --track (obtuve el orden de las opciones incorrecto al fusionar una rama remota)

El comando regular no funciona:

git branch -D "--track"

He tratado de escapar con comillas y barras invertidas, pero ninguno funciona.

¿Algunas ideas?


El doble guión no funcionó para mí en el control remoto con un nombre de rama que contiene comillas dobles y símbolos. Sin embargo, envolver el nombre con las comillas y escapar de las citas contenidas hizo el trabajo:

git push origin --delete "123-my-branch-&-some/"quoted-text/""

y localmente

git branch -D "123-my-branch-&-some/"quoted-text/""


Estoy usando msysgit 1.7.0.2 y la solución sugerida no funciona:

git branch -D - --track # no funciona

No se informa ningún error, pero la rama aún permanece. Terminé eliminando a la fuerza la sucursal a través de:

rm .git / refs / heads / - track


Has probado

git branch -D -- --track

? el " -- " suele ser la convención para "lo que sigue no es una opción, cualquiera que sea su nombre"

Desde " The Art of Unix Programming ", sección " Opciones de línea de comandos ":

También es convencional reconocer un doble guión como una señal para detener la interpretación de opciones y tratar literalmente todos los argumentos siguientes.

Encontrará esa convención en otro (no necesariamente relacionado con Unix) CLI (Command Line Interface) como cleartool :

Si un argumento no opuesto comienza con un carácter de guión ( ), es posible que deba precederlo con un argumento de doble guión, para evitar que se interprete como una opción:

cleartool rmtype -lbtype -- -temporary_label-

El P18 (un preprocesador de archivos rápido y flexible con capacidades de procesamiento macro y soporte especial para la internacionalización) menciona eso también y da una buena descripción de la idea general detrás de esa convención:

Todos los argumentos de opciones pasados ​​a los comandos comienzan con un solo guión.
Todos los argumentos de opción (si los hay) deben preceder a todos los argumentos que no sean de opción.
El final de los argumentos de la opción se puede señalar con un guion doble , esto es útil si un argumento que no es una opción comienza con un guion. Terminar la lista de argumentos de opciones con un doble guión funciona para todos los comandos, incluso aquellos que no toman ningún argumento de opción.

La herramienta OptionParser escrita en ruby ​​también lo establece de manera bastante clara: *

Terminación de análisis de opciones

Es una convención que un doble guión es una señal para detener la interpretación de la opción y para leer literalmente las declaraciones restantes en la línea de comando. Entonces, un comando como:

app -- -x -y -z

no ''verá'' las tres banderas de modo. En cambio, serán tratados como argumentos para la aplicación:

#args = ["-x", "-y", "-z"]

Nota: a veces, toma tres guiones y no dos, especialmente cuando la CLI sigue estrictamente los estilos de opciones de Gnu:

Las opciones de línea de comando estilo Gnu proporcionan soporte para palabras de opción (o palabras clave), y aún así mantienen la compatibilidad con las opciones de estilo de Unix.
Las opciones de este estilo a veces se denominan long_options y las opciones de estilo de Unix como short_options .
La compatibilidad se mantiene al preceder long_options con dos guiones

Al igual que en el estilo de Unix con doble guión '' -- '', el estilo Gnu tiene un triple guión '' --- '' para indicar que el análisis de la opción debe detenerse y tratar el texto restante como argumentos (es decir, leer literalmente desde el comando línea)

Entonces ... si '' -- '' no es suficiente (debe ser con los comandos de Git), prueba '' --- ''


Tuve un problema similar donde accidentalmente terminé con una rama "-r". No pude encontrar la manera de eliminarlo con los comandos de git, así que simplemente lo eliminé en la carpeta .git:

$ cd .git/refs/head $ ls *r -r $ rm "*r"

Esta solución solo era segura porque era la única rama enumerada que terminaba en "r" pero solucionó el problema ...


puede utilizar el software mamed sourcetree que puede eliminar cualquier rama que desee.


git branch -D -- --track