Pourquoi un nom de twig ne peut-il pas contenir le caractère «space»?

J’ai essayé:

git branch "MyProj/bin/ ignored" 

et reçu:

 fatal: 'MyProj/bin/ ignored' is not a valid branch name. 

La page de manuel git-branch pointe vers la page de manuel git-check-ref-format pour obtenir les règles réelles d’un nom de twig valide.

Bien sûr, la raison de l’erreur fatale ci-dessus semble être l’inclusion d’un caractère d’espace.

Toute idée de savoir pourquoi, à notre époque, les espaces sont toujours exclus du nom d’une twig (je l’aurais attendu dans l’ancien CVS, par exemple, mais Git?)

Quelles pourraient être des raisons techniques valables pour cela?

Je ne sais pas si vous allez trouver une raison technique pure en bas de cette liste. Cependant, je peux proposer que les espaces aient tendance à lancer des clés dans toutes sortes d’utilitaires * nix et de traitement de noms de fichiers, donc cela pourrait être pour éviter de faire quelque chose de mal par la suite. Après tout, une twig git se résume à un fichier dans le repo et cela évite de traiter des espaces dans le nom de ce fichier (en particulier, une twig est un fichier en .git / refs / heads /, comme mentionné dans le commentaire).

La plupart du temps, je devine que la raison est philosophique et vise à garder les choses simples. Les noms de twig sont des noms lisibles par l’homme qui n’ont aucune raison d’être compliqués (et nécessitent de taper deux caractères supplémentaires chaque fois que haha, pour appeler le fantôme de l’administrateur qui aliase chaque commande avec une combinaison indéchiffrable de trois lettres). Autrement connu sous le nom d’argument “pourquoi cd n’est pas chdir”.

Il y a une solution possible si vous êtes assez désespéré. Il y a beaucoup de caractères de type espace dans l’ensemble unicode. Mais seul U + 0020 est l’espace interdit. Prenez par exemple un espace insécable et vous pouvez avoir un nom de twig avec des espaces. Le principal problème est que votre clavier n’a probablement pas de clé pour ce sharepoint code. J’utilise le script suivant pour contourner ce problème:

 #!/bin/zsh git co -b "${@// / }" 

Il remplace simplement tous les espaces dans les arguments par des espaces insécables …

vieux fil, mais bon ..
sur un mac j’utilise alt + space. ça va append un personnage invisible qui fera le tour pour vous. esprit: ce n’est pas un «espace», c’est un personnage invisible. visuellement la même chose, mais effectivement pas la même chose. 100% vont probablement confondre l’enfer avec n’importe qui d’autre et vont certainement apporter du chaos partout, mais bon, pour les coups de pied .. pourquoi pas? xd

git checkout -b US24024 Automated Tests - Profile A Switched to a new branch 'US24024 Automated Tests - Profile A'

Ce n’est pas autorisé car cela compliquerait les fonctionnalités de la commande “git checkout”.

Ex: Considérez que vous avez actuellement une twig appelée, bien que vous soyez actuellement dans le master. Si vous exécutez la commande

(master): git checkout -b mon correctif

git ne saurait pas si vous voulez créer une nouvelle twig appelée “mon correctif” ou si vous voulez créer une nouvelle twig appelée “mon” liée à votre “correctif” original, plutôt que la twig “maître”.

Source: https://git-scm.com/docs/git-checkout (documentation Git)