Вот источник сообщения об ошибке:
$ git log %ad
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Вы получите одно и то же сообщение об ошибке из следующих двух команд:
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
$ git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Проблема в том, что git log
получает следующие два аргумента: --pretty=format:%h
(или --pretty=format:\"%h
) и %ad
. Остальное, по крайней мере, когда выполняется непосредственно как команда в bash, является каналом для команды %s%d
, которой обычно не существует. Таким образом, полное сообщение об ошибке в моей системе выглядит следующим образом:
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
bash: %s%d: command not found
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Все это демонстрирует, что цитирование каким-то образом потеряно и %ad
интерпретируется как параметр для git log. Чтобы предотвратить это, вы должны найти правильную комбинацию кавычек и экранирования, чтобы строка формата была правильно заключена в кавычки во время выполнения.
Мерзавец конфигурации руководство о псевдониме и процитировать:
Аргументы разделяются пробелами, поддерживается обычное цитирование и экранирование. пара кавычек и обратная косая черта могут быть использованы для их цитирования.
Из этой строки я не смог понять, как работает цитирование и экранирование. Я попробовал какую-то комбинацию цитирования и экранирования в псевдониме, но не смог разобраться в этом.
Следующие строки, которые вы разместили в своем вопросе, прекрасно работают в моей системе:
[alias]
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Вам придется экспериментировать, чтобы получить правильную комбинацию в вашей системе, используя PuTTY и все.
[alias] lg = log --graph --pretty='format:%C(yellow)%h %Creset%s%Cred%d'