当我在 git commit 消息中使用路径规范时,它们会在系统绝对路径中解析!
例如
git commit -m "/tools/controller subproject moved to submodule"
将导致
C:/Program Files/Git/tools/controller subproject moved to submodule
如何关闭此“功能”?
我的 git 版本是2.12.0.windows.1
.
当我在 git commit 消息中使用路径规范时,它们会在系统绝对路径中解析!
例如
git commit -m "/tools/controller subproject moved to submodule"
将导致
C:/Program Files/Git/tools/controller subproject moved to submodule
如何关闭此“功能”?
我的 git 版本是2.12.0.windows.1
.
事实证明,这是当前Git for Windows 中的一个已知问题(问题跟踪链接)。解决方法是使用MSYS_NO_CONV
:
如果您指定以斜杠开头的命令行选项,POSIX-to-Windows 路径转换将启动转换,例如“
/usr/bin/bash.exe
”到“C:\Program Files\Git\usr\bin\bash.exe
”。如果不希望这样做——例如“--upload-pack=/opt/git/bin/git-upload-pack
”或“-L/regex/
”——您需要MSYS_NO_PATHCONV
临时设置环境变量,如下所示:
MSYS_NO_PATHCONV=1 git blame -L/pathconv/ msys2_path_conv.cc
或者,您可以将第一个斜杠加倍以避免 POSIX 到 Windows 的路径转换,例如“
//usr/bin/bash.exe
”。