【问题标题】:Git-bash tab completion: "fatal: Not a git repository: '.git'" (Windows)Git-bash 选项卡完成:“致命:不是 git 存储库:'.git'”(Windows)
【发布时间】:2013-07-02 10:12:34
【问题描述】:

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

看起来像这样:

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

我仍然可以按预期按回车键正确执行命令。但这真的开始让我紧张了。

有什么建议吗?


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

【问题讨论】:

  • 顺便说一句。其他命令,如 cd,工作正常。
  • git add 也可以正常工作。

标签: windows git git-bash


【解决方案1】:

这取决于你使用的 msysgit 版本:

我刚刚使用最新的 msysgit1.8.3 在 W7 64 位上的 git diff 上测试了一个选项卡完成,它工作得很好。

不要忘记,除了 msysgit 版本之外,由于old bash 3.1 included in mysysgit,您还会遇到制表符补全问题。
还有completion can be slow on Windows


作为下面的OP Zeekermentions,完成git-completion.bash是基于proper git repo path detection

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

在 Zeeker 的例子中,src 文件夹中有一个额外的 .git 文件夹,这意味着任何完成都基于错误的文件夹,对于 git diff,这被证明是致命的。
git add 似乎可以工作。

【讨论】:

  • +1。 IIRC,完成已经经历了几次修复。如果发布时出现一些问题,我不会感到惊讶。
  • 我刚刚安装了最新版本的msysgit,但还是有问题。有没有办法手动安装新的 bash 版本?
  • @Zeeker 不是我所知道的。您使用的是哪个 Windows 操作系统版本?
  • 我使用的是 Windows 7 64 位。
  • @Zeeker 奇怪。我也是。如果您在计算机的其他位置安装便携式版本的 msysgit (code.google.com/p/msysgit/downloads/…),问题是否仍然存在?
【解决方案2】:

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

删除多余的.git 文件夹后,问题消失了。

【讨论】:

    【解决方案3】:

    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的内容新建一个

    【讨论】:

    • 感谢您的建议。但遗憾的是,这并没有解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    相关资源
    最近更新 更多