Показывать полную команду при выполнении псевдонима 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'

чтобы получить тот же эффект, что и выше.