![我怎样才能让 git 理解命令的最短唯一缩写?](https://linux22.com/image/1445458/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E8%AE%A9%20git%20%E7%90%86%E8%A7%A3%E5%91%BD%E4%BB%A4%E7%9A%84%E6%9C%80%E7%9F%AD%E5%94%AF%E4%B8%80%E7%BC%A9%E5%86%99%EF%BC%9F.png)
我如何配置 git 来识别命令的最短唯一前缀,就像 git 对 SHA 哈希或 mercurial 所做的那样?
例如git ad
应被认可为git add
,或git conf
为git config
。
显然,我可以通过添加一堆别名来实现这一点,但面对新的命令,这太脆弱了,而且也很乏味。
是否有一些内置功能可以执行此操作,或者插件?
我已经获得了令人满意的文本编辑器集成,并且对别名不感兴趣。
答案1
好吧,如果你不想添加别名,那么我想到最好的方法就是在TAB命令后按下。例如:
git con
+TAB将导致git config
。git com
+TAB将导致git commit
。git ad
+TAB将导致git add
。- ETC。
PS:不,没有这样的内置功能。
答案2
看起来您是在要求一个新功能。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 命令创建别名的精彩文章。
此外,您选择的编辑器可能内置了 git 集成。下面是 sublime 的示例。我不相信有任何插件可以修改 git 的内置命令结构。
https://scotch.io/tutorials/using-git-inside-of-sublime-text-to-improve-workflow