122 votes

Comment puis-je faire en sorte que git fasse la suggestion "did you mean" ?

I type

git puhs

Et il dit :

kristian@office:~/myrepo$ git puhs
git: 'puhs' is not a git command. See 'git --help'

Did you mean this?
      push

Quel est le paramètre de configuration pour que git ne fasse que la commande suggérée s'il n'a qu'une seule suggestion ?

2 votes

git config --global help.autocorrect prompt demandera une confirmation avant d'appliquer la correction, à partir de git 2.34 (Q4 2021). Voir ma réponse ci-dessous .

152voto

jamessan Points 16420

Selon le git-config(1) , vous souhaitez définir help.autocorrect de manière appropriée. Par exemple, git config --global help.autocorrect 5 fera attendre une demi-seconde avant d'exécuter la commande afin que vous puissiez voir le message en premier.

27 votes

Si vous le réglez sur un nombre négatif, il le fait directement.

9 votes

Existe-t-il un moyen de faire en sorte que git affiche un message avant de corriger, comme le fait zsh (par exemple, "corriger 'puhs' en 'push' [yn] ?") ?

4 votes

@AchalDave Il y en a probablement, si vous écrivez le code pour le faire et que vous soumettez le patch/branche à l'équipe du git pour qu'il soit accepté dans la base de code. Actuellement, cela ne fonctionne pas de cette manière...

26voto

Ben Points 414

L'autocorrection est agréable, mais mon TOC a besoin d'un peu plus de contrôle sur ce qui se passe. J'ai donc écrit un script simple qui choisit la première suggestion fournie par git. Vous exécutez le script après la commande qui a échoué et vous utilisez la syntaxe de substitution de l'historique de bash "bang bang". De plus, si vous tapez quelque chose qui pourrait avoir plus d'une commande, cette commande vous permet de choisir une autre option que la première.

Il ressemblerait à quelque chose comme ceci,

kristian@office:~/myrepo$ git puhs
git: 'puhs' is not a git command. See 'git --help'

Did you mean this?
      push

kristian@office:~/myrepo$ idid !!
Counting objects: 18, done.
Delta compression using up to 32 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (10/10), 1.17 KiB, done.
Total 10 (delta 6), reused 0 (delta 0)

De plus, c'est amusant de taper quelque chose avec deux points d'exclamation. C'est donc un bonus.

Voici une gist avec mon script.

1 votes

Pour être honnête, taper git push est plus rapide que de taper idid !! . Mais dans d'autres cas, ce script serait utile :)

18voto

bstpierre Points 12616

Comme alternative à help.autocorrect : si vous faites toujours les mêmes fautes de frappe, vous pouvez créer des alias pour elles dans votre fichier .gitconfig

[alias]
    puhs = push

(Je le fais aussi avec les alias du shell, où je n'arrive jamais à taper mkae^H^H^H^Hmake correctement.)

18voto

manojlds Points 96599

Jetez également un coup d'œil à thefuck

Il peut corriger les fautes de frappe et faire des suggestions. Il n'est pas limité à git.

3voto

VonC Points 414372

Existe-t-il un moyen de rendre git rapide avant de corriger, comme dans le cas de zsh ?
(par exemple, " correct 'puhs' to 'push' [yn]? ")

Cette question a été posée en 2015. 6 ans plus tard :

Avec Git 2.34 (Q4 2021), la logique d'auto-correction des sous-commandes mal orthographiées a appris à aller interactif lorsque le help.autocorrect La variable de configuration est fixée à ' prompt '.

Véase commit dc66e3c (14 août 2021) par Azeem Bande-Ali ( azeemba ) .
(fusionné par Junio C Hamano -- gitster -- en commit 96ac07f , 10 Sep 2021)

help.c : help.autocorrect=prompt attend l'action de l'utilisateur

Signé par : Azeem Bande-Ali

Si help.autocorrect est fixé à ' prompt ', l'utilisateur est invité à réagir avant que l'action suggérée ne soit exécutée.

Sur la base de correctif original par David Barr (depuis... septembre 2010 !).

git config inclut désormais dans son page de manuel :

git essaiera de suggérer la bonne commande ou même la commande exécuter la suggestion automatiquement.

Les valeurs de configuration possibles sont les suivantes :

  • 0 (par défaut) : affiche la commande suggérée.
  • positive number : exécuter la commande proposée après avoir spécifié décisecondes (0,1 sec).
  • " immediate " : exécuter immédiatement la commande proposée.
  • " prompt " : affiche la suggestion et demande la confirmation de l'exécution de la commande. la commande.
  • " never " : ne pas exécuter ou montrer une commande suggérée.

Notez qu'avec Git 2.35 (Q1 2022), lorsque vous proposez d'exécuter une commande, l'invite a été mise à jour pour correspondre à ce que les autres questions similaires créent.

Ce n'est plus le cas :

Run '%s' instead? (y/N)

Mais.. :

Run '%s' instead [y/N]? 

Véase commit 0fc8ed1 (15 déc. 2021) par Kashav Madan ( kashav ) .
(fusionné par Junio C Hamano -- gitster -- en commit a165484 , 05 janv. 2022)

help : rendre l'invite à l'autocorrection plus cohérente

Signé par : Kashav Madan

Il existe trois callites de git_prompt() qui posent une question "oui/non" à l'utilisateur final, mais l'une d'entre elles en help.c qui demande si la correction automatique suggérée est OK, qui est donnée lorsque l'utilisateur fait une éventuelle faute de frappe dans le nom d'une sous-commande Git, est formatée différemment des autres.

Mise à jour de la chaîne de format pour rendre la chaîne d'invite plus cohérente.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X