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

时间:2013-12-17 19:00:15

标签: git version-control command-line windows-7 cmd

环境数据:

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

我遇到了一个问题,我试图使用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

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

如果我运行该命令,在msysGit路径预期中略微修改,它会正确执行。

git --work-tree=/e/Workspaces/company --git-dir=/e/Workspaces/company/.git status

1 个答案:

答案 0 :(得分:3)

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

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

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

REAL UPDATE

这似乎是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驱动器前缀。