Использование каретки (^) при использовании Git для Windows в PowerShell - PullRequest
9 голосов
/ 07 марта 2012

Я использую git в командной строке с PowerShell и пытаюсь использовать что-то вроде

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 ]

8 голосов
/ 08 марта 2012

Я нашел проблему, и это было с моей настройкой: (* ​​1001 *

Я использую Git для Windows, которая предоставляет git.exe в папке / bin и git.cmd в папке / cmd. git.cmd - это пакетный скрипт, который обёртывает git.exe и выполняет другие действия.

Обе эти директории были в моем PATH, сначала был / cmd, поэтому, когда я набрал git, запускался git.cmd. Поскольку это был пакетный скрипт, каретка не может быть использована. В мире cmd можно выбрать каретку, набрав два из них (^^).

Я полагаю, что это как-то требовалось дважды, поэтому четыре каретки будут сброшены до двух, а затем до одной (я не совсем понимаю этот бит) Я также не понимаю сообщение об ошибке, когда используются две или три каретки.

Урок ...

Используйте git.exe только при использовании Git для Windows с PowerShell!

2 голосов
/ 07 марта 2012

Вы можете использовать ~ вместо ^

git difftool HEAD ~

Обратите внимание, что HEAD ^^ совпадает с HEAD ~ 2

1 голос
/ 07 марта 2012

Попробуйте выйти из каретки с обратной галочкой: `

PS C:\>"Hello`^"
Hello^
0 голосов
/ 07 марта 2012

^ зарезервирован как escape-символ в среде оболочки cmd. Возможно, вам больше повезет, если вы запустите start-process и передадите его в список аргументов, но я этого не проверял.

0 голосов
/ 07 марта 2012

Я не использую git, это просто идея, что если вы заключите его в кавычки?

git difftool "HEAD^"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...