В основном я пытаюсь исказить:
git files 9fa3
... выполнить команду:
git diff --name-status 9fa3^ 9fa3
но мерзавец, кажется, не передает позиционные параметры команде псевдонима. Я попробовал:
[alias]
files = "!git diff --name-status $1^ $1"
files = "!git diff --name-status {1}^ {1}"
... и немногие другие, но они не работали.
Вырожденный случай был бы:
$ git echo_reverse_these_params a b c d e
e d c b a
... как я могу сделать эту работу?
Самый очевидный способ - использовать функцию оболочки:
[alias]
files = "!f() { git diff --name-status \"$1^\" \"$1\"; }; f"
Псевдоним без !
рассматривается как команда Git; например, commit-all = commit -a
.
С !
, он запускается как собственная команда в оболочке, позволяя вам использовать более сильную магию, например, такую.
UPD
Поскольку команды выполняются в корне репозитория, вы можете использовать переменную ${GIT_PREFIX}
, когда ссылаетесь на имена файлов в командах
Вы также можете обратиться к sh
напрямую (вместо создания функции):
[alias]
files = !sh -c 'git diff --name-status $1^ $1' -
(Обратите внимание на тире в конце строки - оно вам понадобится.)