Показывать полную команду при выполнении псевдонима Git?
Есть ли опция показать полную команду при использовании псевдонима?
Пример:
$ git ci -m "initial commit"
Full command: git commit -m "initial commit"
...
$ git lg
Full command: git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
...
Псевдонимы очень удобны, но мне нравится учиться/напоминать, что делает мой псевдоним (большинство моих псевдонимов копируется из Интернета)
Ответы
Ответ 1
В качестве примера:
log-1 = "!sh -c 'echo \"Full command: git log --graph --decorate --pretty=oneline --abbrev-commit\"; git log --graph --decorate --pretty=oneline --abbrev-commit' -"
Вы вызываете оболочку и выполняете заданные команды.
В вашем примере lg вам нужно будет сделать много эскизов, поскольку у вас есть кавычки внутри qoutes и символов, которые нужно экранировать. Я предлагаю вам создать свой собственный симпатичный формат и использовать его в псевдониме. Предположим, мы называем ваш формат моим. Это то, что вам нужно сделать:
git config --add pretty.mine "%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset"
и псевдоним будет
lg = "!sh -c 'echo \"Full command: git log --graph --pretty=mine --abbrev-commit --date=relative\"; git log --graph --pretty=mine --abbrev-commit --date=relative' -"
Ответ 2
Другой вариант - это идеи команд, перечисленные в разделе wiki Git на Aliases, который дает для раздела alias
.git/config
[alias]
aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /'
Затем перечисляются все ваши псевдонимы в виде командной строки.
Ответ 3
Если вы используете bash, вы можете добавить "set -x" в псевдоним. Итак, в качестве простого примера, если у вас есть псевдоним:
ol = !sh -c 'git log --oneline'
вы измените его на:
ol = "!sh -c 'set -x; git log --oneline'"
Он нуждается в двойных кавычках из-за запятой.
Чтобы разрешить остальную часть командной строки, вы должны добавить "$ @", а также поставить "-", чтобы аргументы начинались с $1. Это дает вам:
ol = "!sh -c 'set -x; git log --oneline [email protected]' -"
Более сложные псевдонимы, вероятно, уже будут иметь этот материал.
Я не знаю, как установить глобально для всех алиасов, хотя было бы неплохо иметь!
EDIT:
Это фактически работает немного проще, используя вместо этого функцию оболочки. Вы можете сделать что-то вроде:
git config alias.ol '!f() { set -x; git log --oneline [email protected]; }; f'
чтобы получить тот же эффект, что и выше.