Git-bash 选项卡完成:"fatal: Not a git repository: '.git'" (Windows)



我在windows上使用git和git bash,每次我想在git命令中自动完成文件名时,我都会在我已经键入的字符和已完成的字符之间发布fatal: Not a git repository: '.git'

它看起来像这样:

$ git diff a
<using tab>
$ git diff afatal: Not a git repository: '.git'
pp.js

我仍然可以通过按enter键来正确地发出命令。但这真的开始让我紧张起来。

有什么建议吗?


问题是我的src文件夹中有一个额外的.git-文件夹。存储库是在上面的文件夹(src/..)上初始化的,这似乎与git有关。删除额外的.git文件夹后,问题消失了。

我刚刚发现了解决方案。我在src文件夹中有一个额外的.git目录,它似乎与git混淆了(存储库是在上面的文件夹上初始化的)。

在我删除了额外的.git文件夹后,问题就解决了。

它可能取决于您使用的msysgit版本:

我刚刚用最新的msysgit1.8.3在W7 64位的git diff上测试了一个tab完成,它运行得很好。

别忘了,除了msysgit版本之外,由于myysgit中包含的旧bash 3.1,您还会遇到选项卡完成问题
而且在Windows上完成可能很慢。


正如OP Zeeker在下面提到的,完成git-completion.bash是基于正确的git-reo路径检测

# __gitdir accepts 0 or 1 arguments (i.e., location)
# returns location of .git repo
__gitdir () {
...
}

在Zeeker的案例中,src文件夹中有一个额外的.git文件夹,这意味着任何完成都是基于错误的文件夹,这对git diff来说是致命的
git add似乎有效。

git命令的git-bash完成由/etc/git-completion.bash控制。要修复此问题,请以管理员身份运行git-bash,然后:
cd /etc
mv /etc/git-completion.bash /etc/git-completion.bash.orig

然后根据的内容创建一个新的https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

相关内容

最新更新