在PowerShell中使用Git for Windows时使用插入符号(^)

jon*_*ten 9 windows git powershell

我在PowerShell的命令行中使用git,我正在尝试使用类似的东西

git difftool HEAD^
Run Code Online (Sandbox Code Playgroud)

Powershell似乎对待这就像我打字一样

git difftool HEAD
Run Code Online (Sandbox Code Playgroud)

所以插入符号消失了.如果我使用插入符号的多个副本,我会得到一个奇怪的错误:

git difftool HEAD^^
fatal: ambiguous argument 'HEAD@set': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Run Code Online (Sandbox Code Playgroud)

有趣的是,连续使用四个插入符号似乎可以逃逸到一个,所以git difftool HEAD^^^^按照我期望的git difftool HEAD^方式工作.

我尝试用单引号,双引号,严重的口音来逃避插入符号,似乎没有任何帮助.

这是PowerShell的一个功能,还是我的设置错了?

jon*_*ten 8

我发现了问题,这是我的设置:(

我正在使用Git for Windows,它git.exe在/ bin文件夹和git.cmd/ cmd文件夹中提供.git.cmd是一个批处理脚本,它包装git.exe并执行其他一些操作.

这两个目录都在我的PATH中,/ cmd首先出现,所以当我键入时git,git.cmd正在运行.因为这是一个批处理脚本,所以不能使用插入符号.在cmd世界中,通过键入两个(^^)来转义插入符号.

我想这是某种方式需要两次,所以四个插入符号将被转义为两个,然后一个(我真的不明白这一点).当使用两个或三个插入符号时,我也不理解错误消息.

课程是......

使用Git for Windows和PowerShell时只使用git.exe!