Git 状态:致命:索引文件打开失败:cmd.exe 中的参数无效

问题描述 投票:0回答:2

环境数据:

  • Git 版本:1.8.4
  • 操作系统:Windows 7 Professional

我遇到了一个问题,我试图使用 cmd.exe 中的选项 --work-tree 和 --git-dir 来发出 Git 状态

当我运行以下命令时:

git --work-tree=E:\Workspaces\company --git-dir=E:\Workspaces\company\.git status

我收到以下信息:

fatal: index file open failed: Invalid argument

如果我将 status 替换为 fetch 那么一切都会完美运行。但是状态拒绝在 cmd.exe 中运行

如果我运行命令,在 msysGit 路径预期范围内稍微修改一下,它就会正确执行。

git --work-tree=/e/Workspaces/company --git-dir=/e/Workspaces/company/.git status
git version-control command-line windows-7 cmd
2个回答
4
投票

如果你转义反斜杠,也许你的第一个会起作用:

git --work-tree=E:\\Workspaces\\company --git-dir=E:\\Workspaces\\company\\.git status

更新

我明白了,试试这个:

git --work-tree="E:\Workspaces\company" --git-dir="E:\Workspaces\company\.git" status

我尝试过这个,它对我有用。我的目录中甚至有空格:-)

真正的更新

这似乎是 1.8.4 中引入的回归,您现在可能必须降级到 1.8.3,直到它得到修复并发布 1.8.5。或者同时使用 bash。

这里有一个参考:https://stackoverflow.com/a/19511402/329928

这是 GitHub 上的问题:

Tvangeste 发现,如果“in”和“prefix”带有 DOS 驱动器前缀(例如“C:/windows”),“

relative_path
”功能就无法在 Windows 上正常工作。

例如,当执行:

test-path-utils
时,
relative_path "C:/a/b" "D:/x/y"
应该返回“
C:/a/b
”,但返回“
../../C:/a/b
”,这是错误的。

因此使relative_path遵循DOS驱动器前缀。


0
投票

只需创建一个新文件夹并将文件粘贴到其中 重新添加远程源,它应该可以很好地为您推送

© www.soinside.com 2019 - 2024. All rights reserved.