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

时间:2012-03-07 11:24:58

标签: windows git powershell

我在PowerShell的命令行中使用git,我正在尝试使用像

这样的东西
git difftool HEAD^

Powershell似乎将此视为我输入

git difftool HEAD

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

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

有趣的是,连续使用四个插入符号似乎可以逃逸到一个插入符号,因此git difftool HEAD^^^^可以正常工作,因为git difftool HEAD^可以正常工作。

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

这是PowerShell的一项功能,还是我的设置错误?

5 个答案:

答案 0 :(得分:8)

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

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

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

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

课程是......

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

答案 1 :(得分:2)

您可以使用〜而不是^

git difftool HEAD~

请注意,HEAD ^^与HEAD~2相同

答案 2 :(得分:1)

尝试使用反向标记来转义插入符号:`

PS C:\>"Hello`^"
Hello^

答案 3 :(得分:0)

我不使用git,这只是一个想法,如果你把它括在引号中怎么办?

git difftool "HEAD^"

答案 4 :(得分:0)

^保留为cmd shell环境中的转义字符。你可能有更好的运气使用start-process并将其传递给参数列表,但我没有测试过。