Como posso fazer com que o git faça a sugestão "você quis dizer"?

120

Eu digito

git puhs

E o git diz:

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

Did you mean this?
      push

Qual é a configuração para que o git execute o comando sugerido se ele tiver apenas uma sugestão?

krosenvold
fonte

Respostas:

150

De acordo com o git-config (1) , você deseja definir help.autocorrectadequadamente. Por exemplo, git config --global help.autocorrect 5esperará meio segundo antes de executar o comando para que você possa ver a mensagem primeiro.

jamessan
fonte
27
Se você o definir como um número negativo, ele o fará diretamente.
Alper
8
Existe uma maneira de fazer o git prompt antes de corrigir, semelhante ao zsh? (por exemplo, "corrigir 'puhs' para 'empurrar' [yn]?")
Achal Dave
4
@AchalDave Provavelmente, se você escrever o código para fazer isso e enviar o patch / branch às gitpessoas para que ele seja aceito na base de código. Atualmente, não é assim que funciona ...
twalberg
1
Isso parece funcionar se houver exatamente um comando candidato. Por exemplo, git statnão faz nada mesmo depois de usar sua sugestão, pois ela tem vários candidatos. Alguma sugestão de como fazê-lo escolher a primeira?
precisa saber é o seguinte
25

A autocorreção é boa, mas meu auto-TOC precisa de um pouco mais de controle sobre o que está acontecendo. Então, eu escrevi um script simples que escolhe a primeira sugestão fornecida pelo git. Você executa o script após o comando com falha e usa a sintaxe "bang bang" da substituição do histórico do bash. Além disso, se você estiver digitando algo que possa ter mais de um comando, esse comando permitirá que você escolha outro que não seja a primeira opção.

Seria algo assim,

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)

Além disso, é divertido digitar qualquer coisa com dois pontos de exclamação. Então, bônus por isso.

Aqui está uma essência do meu script

Ben
fonte
1
Para ser sincero, digitar git pushé mais rápido que digitar idid !!. Mas em outros casos, este programa seria :) útil
theonlygusti
18

Como alternativa ao help.autocorrect: se você digitar os mesmos erros o tempo todo, poderá criar aliases para eles no seu arquivo .gitconfig

[alias]
    puhs = push

(Eu faço isso com aliases de shell também, onde nunca consigo digitar mkae^H^H^H^Hmakecorretamente.)

bstpierre
fonte
17

Também dê uma olhada thefuck

Ele pode corrigir erros de digitação e também executar sugestões. Não se limita apenas ao git.

manojlds
fonte
Estou usando o fuckcomando há 2 anos, tornou-se um dos meus "não posso viver sem ele" modificações terminais!
Noah Sussman