Question

Je sais que ce n'est pas strictement une question de programmation, mais elle est liée à git. J'ai accidentellement créé une branche dans git appelé --track (je suis arrivé l'ordre des options mal lors de la fusion d'une branche à distance)

La commande régulière ne fonctionne pas:

git branch -D "--track"  

J'ai essayé d'échapper avec des citations et des barres obliques inverses, mais ni le travail.

Toutes les idées?

Était-ce utile?

La solution

Avez-vous essayé

git branch -D -- --track

? le « -- » est généralement la convention pour « ce qui suit est pas une option, quel que soit son nom »


De " L'art de la programmation Unix ", section « options de ligne de commande ":

  

Il est également classique de reconnaître un double trait d'union comme un signal pour arrêter l'interprétation de l'option et de traiter littéralement tous les arguments suivants.

Vous trouverez cette convention dans d'autres (pas nécessaire Unix liés) CLI (Command Line Interface) comme cleartool :

  

Si argument nonoption commence par un caractère tiret (), vous devrez peut le faire précéder d'un argument à double trait d'union, pour l'empêcher d'être interprété comme une option:

cleartool rmtype -lbtype -- -temporary_label- 

Le P18 (un fichier rapide et flexible préprocesseur avec des capacités de traitement macro et un soutien particulier pour l'internationalisation) mentionne que aussi et donne une bonne description de l'idée générale derrière cette convention:

  

Tous les arguments d'option passé aux commandes commencent par un seul trait d'union.
  Tous les arguments d'option (le cas échéant) doit précéder tous les arguments non-option.
  La fin des arguments d'option peut être signalée au moyen d'un double tiret , ce qui est utile si un argument sans option commence par un trait d'union. Mettre fin la liste des arguments d'option avec un double trait d'union fonctionne pour toutes les commandes, même celles qui ne prennent pas d'arguments d'option.

Le OptionParser outil écrit en Ruby met également en très clairement: *

Option Parsing Fin

  

Il est convention qu'un double tiret est un signal pour arrêter l'interprétation de l'option et de lire les instructions restantes sur la ligne de commande littéralement. Ainsi, une commande telle que:

 app -- -x -y -z
  

ne « voir » les trois mode-drapeaux. Au lieu de cela, ils seront traités comme des arguments à la demande:

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

Note: parfois, il faut trois tirets et non deux, en particulier lorsque le CLI suit strictement les choix Gnu styles:

  

Les options de ligne de commande de style Gnu offrent un soutien pour les mots d'options (ou mots-clés), mais conservent encore la compatibilité avec les options de style Unix.
  Les options de ce style sont parfois appelés long_options et les options de style Unix short_options .
  La compatibilité est maintenue par les précédentes long_options avec deux tirets

     

Tout comme le style de style Unix double trait d'union « -- », le gnou a un triple trait d'union « --- » pour signaler que l'analyse des options est interrompue et pour traiter le reste du texte comme arguments (qui est, littéralement de la commande ligne)

Alors ... si '--' ne suffit pas (il devrait être avec les commandes Git), essayez '---'

Autres conseils

git branch -D -- --track

J'utilise msysgit 1.7.0.2 et la solution proposée ne fonctionne pas:

git branch -D - --track # ne fonctionne pas

Aucune erreur est signalée, mais la branche reste. J'ai fini par enlever de force la branche via:

rm .git / refs / heads / - piste

Le double trait d'union ne fonctionne pas pour moi à distance avec un nom de branche contenant des guillemets doubles et esperluette. emballage Cependant, les citations de nom et échapper aux citations contenues a fait le travail:

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

et localement:

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

J'ai eu un problème similaire où je accidentellement fini avec une branche « -r ». Je ne pouvais pas comprendre comment l'enlever à l'aide des commandes git donc je supprimer simplement dans le dossier .git:

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

Cette solution n'a été sûre car elle était la seule branche qui a pris fin dans la liste « r », mais il a résolu le problème ...

vous pouvez utiliser un logiciel qui peut mamed supprimer sources du tout branche que vous souhaitez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top