我怎样才能让 Git 做“你的意思是”的建议?

我打字

git puhs

Git 说:

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


Did you mean this?
push

如果 git 只有一个建议,那么让 git 执行建议的命令的配置设置是什么?

15285 次浏览

根据 Git-config (1),您需要适当地设置 help.autocorrect。例如,git config --global help.autocorrect 5会让它在运行命令之前等待半秒钟,这样您就可以先看到消息。

自动更正的一种替代方法是: 如果您总是出现相同的输入错误,那么您可以在您的。Gitconfig 文件

[alias]
puhs = push

(我也使用 shell 别名这样做,在这种情况下,我似乎永远无法正确地键入 mkae^H^H^H^Hmake。)

自动纠错功能很好,但是我的强迫症自我需要更多一点的控制。因此,我编写了一个简单的脚本,只选择 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)

另外,输入任何有两个感叹号的东西都很有趣,这是额外的奖励。

这是 我的剧本大意

再看看 thefuck

It can correct typos, and also perform suggestions. Not just limited to git.

有没有一种方法可以让 git 提示在修改之前就像 zsh 一样?
(例如: 「 correct 'puhs' to 'push' [yn]?」)

2015.6年后,人们问道:

使用 Git 2.34(Q42021) ,当 help.autocorrect配置变量设置为“ prompt”时,用于自动纠正拼写错误子命令的逻辑学会了转到 互动

提交 dc66e3c(2021年8月14日) by 阿齐姆 · 班德-阿里(azeemba)
(由 朱尼奥 · C · 哈马诺 gitster提交96ac07f合并,2021年9月10日)

help.c : help.autocorrect=prompt等待用户操作

签名: Azeem Bande-Ali

如果将 help.autocorrect设置为“ prompt”,则会在执行建议的操作之前提示用户。

基于 原版补丁作者: David Barr(从... 2010年9月!)。

git config现在在其 man page中包括:

Git 将尝试建议正确的命令,甚至 自动运行这个建议。

可能的配置值是:

  • 0(默认) : 显示建议的命令。
  • positive number: 在指定之后运行建议的命令 分秒(0.1秒)。
  • immediate”: 立即运行建议的命令。
  • prompt”: 显示建议并提示确认运行 the command.
  • "never": don't run or show any suggested command.

注意,对于 Git 2.35(Q12022) ,当建议运行一个命令时,提示符已经更新以匹配其他类似问题创建的内容。

它不再是:

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

But:

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

See 第八季,第1集 (15 Dec 2021) by Kashav Madan (kashav).
(由 朱尼奥 · C · 哈马诺 gitster提交165484合并,2022年1月5日)

help : 使自动校正提示更加一致

签名: Kashav Madan

There are three callsites of git_prompt() helper function that ask a "yes/no" question to the end user, but one of them in help.c that asks if the suggested auto-correction is OK, which is given when the user makes a possible typo in a Git subcommand name, is formatted differently from the others.

更新格式字符串,使提示字符串看起来更加一致。