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"

(Я также изменил сингл & правильно сказать &&.)

Другие вопросы по тегам