lint-staged -diff=origin/refs/heads/main^...origin/refs/heads/main が動かない

pnpm lint-staged -diff=origin/main^...main
とすると、No staged files found.
となる (もちろん変更されたファイルはある状態)

const cliOptions = cli.parse(process.argv).opts()
として lint-staged は CLI のオプションを取得していて、この cli
は commander.js を使っている
ただライブラリは関係なくて、Windows で試すと main^...main
が main..main
となってしまっていることが確認できる
バージョン
Windows
Edition Windows 11 Home Insider Preview
Version 22H2
Installed on 2023/10/01
OS build 23555.1000
Experience Windows Feature Experience Pack 1000.23555.1000.0
Powershell
7.4.0-preview.6
Node.js
v20.8.0
pnpm
8.8.0
lint-staged
14.0.1

pnpm lint-staged --debug --diff=main^...main
とすると、以下のようにキャレット(^)が消えていることが確認できる
process.argv
の段階で消えているので、シェルの仕様かもしれないが、git diff
では正常に動作するのでおそらくNode.jsの仕様
lint-staged:bin Options parsed from command-line: {
...
diff: 'main...main',
...
}

console.log(process.argv)
を node test.js ^
で実行すると、以下のようにキャレットが消えていることが確認できる
また、これは node test.js "^"
でも同様だが、"^ "
や " ^"
のようにすると消えない
[
'C:\\Users\\takua\\AppData\\Local\\Volta\\tools\\image\\node\\20.8.0\\node.exe',
'C:\\Users\\takua\\GitHub\\astrolarva\\test.js'
]

Windows 独自の問題らしいが、CI (GitHub Actions, Ubuntu) でも発生していた…原因が異なる可能性はありそう
Java で同様のテストを行ったところ消えなかったので他の問題な気がする
import java.util.Arrays;
class Main {
public static void main(String[] args) {
System.out.println(Arrays.toString(args));
}
}

SSH接続した Ubuntu (Ubuntu 22.04.3 LTS) では消えなかったので、Windows だけで発生する Node.js の問題…?

よく見たらCIでは Failed to get staged files!
となっていた
↑はすべてWindowsローカルでの原因

refに日本語が入っているせいかと思ったが、PRのときは問題ないようなので違う
^
がダメなのだろうか?

origin/refs/heads/main
となっていたのが原因のようだった、Ubuntuローカルで refs/heads/main
に変更したところ動作する

git の参照について不勉強で全くわからんので勉強しないといけない…