Git linux (wsl) 和 windows 之间的路径规范行为差异

Git pathspecs difference in behavior between linux (wsl) and windows

我不明白为什么相同的命令在 linux 上有效而在 windows 上无效。 pathspecs 语法是否不同或 git windows 版本有问题?

在 windows(git 版本 2.31.1.windows.1)

git status -- 'src/test.js'
On branch master
nothing to commit, working tree clean

在 linux(wsl:git 版本 2.25.1)

git status -- 'src/test.js'
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   src/test.js

经典 git status 在 linux 和 windows 之间给出相同的结果。

正如您在 Git 邮件列表中看到的,这实际上是一个 cmd.exe 问题:运行:

git status -- 'src/test.js'

传递文字字符串:

'src/test.js'

到Git,而不是传递:

src/test.js

到Git。结果 Git 正在查找文件名 ,包括引号 。 (最简单的解决方案是省略引号,对于此路径规范,这两个系统都不需要引号:任何 shell 或 CLI 都没有任何特殊字符。)