Git 路径中包含下划线的文件比较失败
Git diff fails on file with underscore in path
我是 运行ning Windows 7,我有最新版本的 git (2.7.2.windows.1)。我以前使用 Windows PowerShell 作为 git 操作的终端,没有任何问题。最近,我决定切换到 Git Bash,但我遇到了一个主要问题。
我的项目有一个目录(里面有很多子目录),其名称只是一个下划线。每当我尝试 运行 git diff
该目录中的文件时,我都会收到以下错误:
$ git diff _/css/templates/jquery.tag-editor.css
fatal: Invalid object name '_C'.
据我所知,下划线是 file/directory 名称中的完全有效字符,制表符补全在该目录中工作正常,所以我知道终端可以在其中 "see"。此外,该项目的其他贡献者,所有 运行ning OSX,都没有这个问题。当我 运行 一个简单的 git diff
,没有指定任何单个文件时,它工作正常,并且很高兴地在下划线目录中包含任何更改文件的差异。如果我 cd
进入下划线目录并从那里 运行 git diff
,它也有效,这样我传递给它的路径不包括下划线。
这里到底发生了什么阻止我运行宁git diff
这些文件?当我尝试这样做时,错误消息中的 "C" 来自哪里?
更新
当我 运行 git checkout -- _/css/templates/jquery.tag-editor.css
放弃对该文件的更改时,这是我看到的错误:
error: pathspec '_C:/Program Files/Git/css/templates/jquery.tag-editor.css' did not match any file(s) known to git.
C:\Program Files\Git
是我的 Git 安装目录。显然路径的一部分被解释为指的是 Git 安装目录?同样,是什么导致了这种情况?
您遇到的问题是基于 Posix Path conversions of MinGW/Msys2。
- 在 git-bash 尝试双斜杠:
git diff _//css/templates/jquery.tag-editor.css
或使用反斜杠(需要在 git-bash 中转义) : git diff _\css\templates\jquery.tag-editor.css
或前置 MSYS_NO_PATHCONV=1
: MSYS_NO_PATHCONV=1 git diff _/css/templates/jquery.tag-editor.css
- 在 CMD 上,您应该使用反斜杠而不是斜杠:
git diff _\css\templates\jquery.tag-editor.css
或双斜杠,如 git-bash
为了防止转换。
我是 运行ning Windows 7,我有最新版本的 git (2.7.2.windows.1)。我以前使用 Windows PowerShell 作为 git 操作的终端,没有任何问题。最近,我决定切换到 Git Bash,但我遇到了一个主要问题。
我的项目有一个目录(里面有很多子目录),其名称只是一个下划线。每当我尝试 运行 git diff
该目录中的文件时,我都会收到以下错误:
$ git diff _/css/templates/jquery.tag-editor.css
fatal: Invalid object name '_C'.
据我所知,下划线是 file/directory 名称中的完全有效字符,制表符补全在该目录中工作正常,所以我知道终端可以在其中 "see"。此外,该项目的其他贡献者,所有 运行ning OSX,都没有这个问题。当我 运行 一个简单的 git diff
,没有指定任何单个文件时,它工作正常,并且很高兴地在下划线目录中包含任何更改文件的差异。如果我 cd
进入下划线目录并从那里 运行 git diff
,它也有效,这样我传递给它的路径不包括下划线。
这里到底发生了什么阻止我运行宁git diff
这些文件?当我尝试这样做时,错误消息中的 "C" 来自哪里?
更新
当我 运行 git checkout -- _/css/templates/jquery.tag-editor.css
放弃对该文件的更改时,这是我看到的错误:
error: pathspec '_C:/Program Files/Git/css/templates/jquery.tag-editor.css' did not match any file(s) known to git.
C:\Program Files\Git
是我的 Git 安装目录。显然路径的一部分被解释为指的是 Git 安装目录?同样,是什么导致了这种情况?
您遇到的问题是基于 Posix Path conversions of MinGW/Msys2。
- 在 git-bash 尝试双斜杠:
git diff _//css/templates/jquery.tag-editor.css
或使用反斜杠(需要在 git-bash 中转义) :git diff _\css\templates\jquery.tag-editor.css
或前置MSYS_NO_PATHCONV=1
:MSYS_NO_PATHCONV=1 git diff _/css/templates/jquery.tag-editor.css
- 在 CMD 上,您应该使用反斜杠而不是斜杠:
git diff _\css\templates\jquery.tag-editor.css
或双斜杠,如 git-bash
为了防止转换。