Как я могу заставить git выполнить предложение «вы имели в виду»?


120

Я печатаю

git puhs

И git говорит:

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

Did you mean this?
      push

Каков параметр конфигурации, чтобы git просто выполнял предложенную команду, если у нее есть только одно предложение?

Ответы:


150

Согласно git-config (1) , вы хотите установить help.autocorrectсоответствующие настройки . Например, git config --global help.autocorrect 5заставит его подождать полсекунды перед запуском команды, чтобы вы могли сначала увидеть сообщение.


27
Если вы установите отрицательное число, он сделает это напрямую.
Alper

8
Есть ли способ сделать запрос git перед исправлением, аналогичный zsh? (например, «правильно 'puhs', чтобы 'push' [yn]?»)
Ахал Дэйв

4
@AchalDave Вероятно, есть, если вы напишете код для этого и отправите патч / ветку gitлюдям, чтобы они приняли его в базу кода. В настоящее время так не работает ...
twalberg

1
Кажется, это работает, если есть только одна команда-кандидат. Например, git statничего не делает даже после использования вашего предложения, потому что у него несколько кандидатов. Любые предложения о том, как заставить его выбрать первый?
gokul_uf 05

25

Автокоррекция - это хорошо, но моему ОКР нужно немного больше контроля над тем, что происходит. Итак, я написал простой скрипт, который просто выбирает первое предложение, предоставленное git. Вы запускаете сценарий после неудачной команды и используете встроенный синтаксис замены истории bash "bang bang". Кроме того, если вы набираете что-то, что может иметь более одной команды, эта команда позволяет вам выбрать один вариант, отличный от первого.

Это выглядело бы примерно так:

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)

Кроме того, интересно набирать что угодно с двумя восклицательными знаками. Так что бонус за это.

Вот суть моего сценария


1
Если честно, печатать git pushбыстрее, чем печатать idid !!. Но в других случаях этот скрипт был бы полезен :)
theonlygusti

18

В качестве альтернативы help.autocorrect: если вы все время делаете одни и те же опечатки, вы можете создать для них псевдонимы в своем файле .gitconfig.

[alias]
    puhs = push

(Я делаю это и с псевдонимами оболочки, где мне кажется, что я никогда не могу mkae^H^H^H^Hmakeправильно печатать .)


17

Также взгляните на thefuck

Он может исправлять опечатки, а также делать предложения. Не только git.


Использую fuckкоманду уже 2 года, она стала одной из моих модификаций терминала "не могу жить без нее" !!
Ной Сассман
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.