Comment puis-je demander à git de faire la suggestion «vouliez-vous dire»?

120

J'écris

git puhs

Et git 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 fasse simplement la commande suggérée s'il n'a qu'une suggestion?

Krosenvold
la source

Réponses:

150

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

Jamessan
la source
27
Si vous le définissez sur un nombre négatif, il le fait directement.
Alper
8
Existe-t-il un moyen de créer une invite git avant de corriger, similaire à zsh? (par exemple, "corriger 'puhs' pour 'pousser' [yn]?")
Achal Dave
4
@AchalDave Il y en a probablement, si vous écrivez le code pour faire cela et soumettez le correctif / la branche aux gitgens pour qu'il soit accepté dans la base de code. Actuellement, ça ne marche pas comme ça ...
twalberg
1
Cela semble fonctionner ssil y a exactement une commande candidate. Par exemple, git statne fait rien même après avoir utilisé votre suggestion car elle a plusieurs candidats. Une suggestion sur la façon de lui faire choisir le premier?
gokul_uf
25

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

Cela ressemblerait à quelque chose comme ça,

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, il est amusant de taper n'importe quoi avec deux points d'exclamation. Alors bonus pour ça.

Voici l' essentiel de mon script

Ben
la source
1
Pour être honnête cependant, taper git pushest plus rapide que taper idid !!. Mais dans d'autres cas, ce script serait utile :)
theonlygusti
18

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

[alias]
    puhs = push

(Je le fais aussi avec des alias shell, où je n'arrive jamais à taper mkae^H^H^H^Hmakecorrectement.)

Bstpierre
la source
17

Jetez également un œil à thefuck

Il peut corriger les fautes de frappe et effectuer des suggestions. Pas seulement limité à git.

manojlds
la source
J'utilise la fuckcommande depuis 2 ans maintenant, c'est devenu l'une de mes modifications de terminal "ne peut pas vivre sans" !!
Noah Sussman