Git alias не печатает вывод команды
У меня есть следующий псевдоним git
[alias]
remaster = !"git checkout $1 & git diff-tree -r --patch --diff-filter=DM $1..master"
При использовании вышеупомянутой команды вручную я получаю следующий стандартный вывод:
$ git diff-tree -r --patch development..master --diff-filter=DM
diff --git a/subfolder/subfile.exe b/subfolder/subfile.exe
deleted file mode 100644
index e69de29..0000000
diff --git a/virus.exe b/virus.exe
deleted file mode 100644
index e69de29..0000000
При использовании псевдонима вывод недоступен, поэтому я не могу использовать его для исправления:
$ git remaster development
1 ответ
Решение
Псевдонимы Git в основном предназначены для вызова одной другой команды git, не более одной произвольной команды. То есть вы обычно делаете что-то вроде
[alias]
aa = commit --amend -a --no-edit
Обратите внимание, что выше говорит только commit
не git commit
, В любом случае, есть общая хитрость для достижения желаемого с помощью фиктивной функции оболочки:
[alias]
remaster = "!f() { git checkout $1 && git diff-tree -r --patch --diff-filter=DM $1..master | git apply; }; f"
(Я также изменил сингл &
правильно сказать &&
.)