Pregunta

Sé que esto no es estrictamente una programación de la pregunta, pero está relacionado con git.Yo accidentalmente han creado una rama en git llamado --track (Tengo el orden de las opciones de mal cuando la fusión de una sucursal remota)

El comando no funciona:

git branch -D "--track"  

He tratado de escapar con citas y barras diagonales inversas, sin embargo, ni el trabajo.

Alguna idea?

¿Fue útil?

Solución

¿Usted intentó

git branch -D -- --track

? la "--" es por lo general la convención de "lo que sigue no es una opción, cualquiera que sea su nombre"


A partir de " El Arte de Programar en Unix ", sección " Opciones de línea de comandos ":

  

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

Usted encontrará que otra convención en CLI (no necesaria relacionada con Unix) (Command Line Interface) como cleartool :

  

Si un argumento nonoption comienza con un guión (), es posible que necesite precedido de un argumento de doble guión, para evitar que sea interpretado como una opción:

cleartool rmtype -lbtype -- -temporary_label- 

El rel="noreferrer"> P18 (un preprocesador de archivos rápida y flexible con capacidad de procesamiento de macro y un apoyo especial para la internacionalización) menciona que también y le da una buena descripción de la idea general detrás de esa convención:

  

Todos los argumentos de opciones se pasan a los comandos comienzan con un solo guión.
  Todos los argumentos de opciones (si los hay) deben preceder a todos los argumentos que no sean opciones.
  El extremo de los argumentos de opción puede señalizarse usando un doble guión , esto es útil si un argumento no opción comienza con un guión. Terminación de la lista de argumentos de opciones con un doble guión funciona para todos los comandos, incluso aquellos que no toma ningún argumento de opción.

El OptionParser herramienta de escrita en Ruby también pone a cabo con toda claridad: *

análisis de las opciones de terminación

  

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

 app -- -x -y -z
  

No será ‘ver’ las tres banderas de modo. En su lugar, van a ser tratados como argumentos a la aplicación:

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

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

  

Las opciones de línea de comandos de estilo GNU proporcionan apoyo para las palabras de opción (o palabras clave), y aún así mantener la compatibilidad con las opciones de estilo de Unix.
  Las opciones de este estilo se refieren a veces como las opciones de estilo de Unix como long_options y short_options .
  La compatibilidad se mantiene precediendo el long_options con dos guiones

     

Al igual que en el estilo Unix doble guión '--', el estilo de GNU tiene un triple-guión '---' para indicar que la opción de análisis se detuvo y para tratar el resto del texto como argumentos (es decir, leer literalmente del comando line)

Así que ... si '--' no es suficiente (que debe estar con los comandos de Git), intente '---'

Otros consejos

git branch -D -- --track

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

git branch-D -- --pista # no funciona

No se indica ningún error, pero la rama sigue siendo.Terminé el traslado forzoso de la rama a través de:

rm .git/refs/heads/--pista

El doble guión no funcionó para mí en remoto con un nombre de la rama que contiene comillas dobles y los símbolos de unión. Sin embargo envolver las cotizaciones nombre y escapar de las cotizaciones 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\""

He tenido un problema similar donde accidentalmente terminó con una rama "r". No podía encontrar la manera de eliminar utilizando los comandos git por lo que sólo se quita en la carpeta .git:

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

Esta solución sólo era seguro, ya que era la única rama que terminó en la lista "r", pero lo hizo resolver el problema ...

puede utilizar el software mamed SourceTree que puede eliminar cualquier rama que te gusta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top