我怎样才能让 git 理解命令的最短唯一缩写?

我怎样才能让 git 理解命令的最短唯一缩写?

我如何配置 git 来识别命令的最短唯一前缀,就像 git 对 SHA 哈希或 mercurial 所做的那样?

例如git ad应被认可为git add,或git confgit config

显然,我可以通过添加一堆别名来实现这一点,但面对新的命令,这太脆弱了,而且也很乏味。

是否有一些内置功能可以执行此操作,或者插件?

我已经获得了令人满意的文本编辑器集成,并且对别名不感兴趣。

答案1

好吧,如果你不想添加别名,那么我想到最好的方法就是在TAB命令后按下。例如:

  • git con+TAB将导致git config
  • git com+TAB将导致git commit
  • git ad+TAB将导致git add
  • ETC。

PS:不,没有这样的内置功能。

答案2

看起来您是在要求一个新功能。Git 是开源的,因此您可以随意增强它:

https://github.com/git/git

您可以提取源代码。我看到命令是在 git.c 中名为“commands[]”的数组下定义的。匹配似乎是在以下函数中完成的:

static struct cmd_struct *get_builtin(const char *s)
{
    int i;
    for (i = 0; i < ARRAY_SIZE(commands); i++) {
            struct cmd_struct *p = commands + i;
            if (!strcmp(s, p->cmd))
                    return p;
    }
    return NULL;
}

您可以修改 strcmp() 的行以执行最小前缀匹配。我认为这不应该超过 20 行代码。

答案3

这是一篇关于为 git 命令创建别名的精彩文章。

http://githowto.com/aliases

此外,您选择的编辑器可能内置了 git 集成。下面是 sublime 的示例。我不相信有任何插件可以修改 git 的内置命令结构。

https://scotch.io/tutorials/using-git-inside-of-sublime-text-to-improve-workflow

答案4

“面对新命令”——哪些新命令?在我看来,这种情况并不常见,即使发生,也可能不是您经常使用的命令。

我建议使用 Zsh 和oh-my-zshGit 插件。它提供很多有用的别名

当然,您也可以直接复制粘贴别名并在 Bash 中使用它们,但您会失去很好的自动完成功能。此外,您还必须确保定义辅助函数。

相关内容