Я предпочитаю использовать строковые кавычки '
вместо двойных кавычек: меньше экранирования в вашем случае.
См. Этот пример, сделанный в сеансе git bash.
vonc@voncavn7:/mnt/d/git/git$
git config --global --replace-all alias.lol6 \
'! f() { echo "$1"; git --no-pager log --oneline --graph -15 ${@}; }; f'
Сначала я проверяю, что могу вывести фиктивный аргумент:
vonc@voncavn7:/mnt/d/git/git$ git config --global --replace-all alias.lol6 '! f() { echo "$1"; git --no-pager log --oneline --graph -15 ${@}; }; f'
vonc@voncavn7:/mnt/d/git/git$ git lol6 e
e
fatal: ambiguous argument 'e': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Затем я пытаюсь без кавычек при вызове псевдонима: git lol6 @{-1}
vonc@voncavn7:/mnt/d/git/git$ git lol6 @{-1}
@{-1}
* 29533fb168 (tmp2) RelNotes: the eleventh batch
* dc8fb4dd7e Merge branch 'rb/quick-install-doc'
|\
| * 65289e9dcd install-doc-quick: allow specifying what ref to install
Если приведенный выше псевдоним / команда не работает, всегда перепроверяйте с помощью упрощенный PATH :
set G=c:\path\to\latest\git
set PATH=%G%\bin;%G%\usr\bin;%G%\mingw64\bin
set PATH=%PATH%;C:\windows\system32;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\
OPБоаз Наум подтверждает в комментариях :
с использованием 'упрощенного PATH' - это работает.
Теперь, что это значит?Почему это работает?
Это работает, потому что невозможно сказать, что находится в вашем исходном PATH, в C:\Windows\System32
и других папках, помещенных перед Git, и затеняет некоторые исполняемые файлы Git.
Как сделать так, чтобы стандартная установка Git тоже работала?
Просто замените c:\path\to\latest\git
выше на свой собственный текущий путь установки Git.
Затем установите PATH
:
set PATH=%G%\bin;%G%\usr\bin;%G%\mingw64\bin
Далее добавьте все своидругие папки образуют ваш исходный %PATH%
, и всегда заканчиваются C:\windows\system32;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\
.
Таким образом, вы:
- начинаете с самого конкретного (Git:
git/bin
, git/usr/bin
, git/ming64/bin
), убедившись, что Git работает должным образом - продолжайте использовать более общие пути к приложениям (те, что были в исходном PATH)
- заканчиваютсясамый общий ПУТЬ из всех: ОС Windows (
C:\windows\system32\...
)
Переходя от наиболее специфического к наиболее общему, вы снижаете уровень «неожиданного поведения» установленного программного обеспечения..