Git别名不显示命令输出

时间:2018-08-31 06:18:15

标签: git git-alias git-diff-tree

我有以下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 个答案:

答案 0 :(得分:1)

Git别名的主要目的是调用另一个 git 命令,而不是一个以上的任意命令。也就是说,您通常会执行类似的操作

[alias]
    aa = commit --amend -a --no-edit

请注意,以上仅说commit,而不是git commit。无论如何,有一个通用技巧可以通过使用虚拟shell函数来实现您想要的目标:

[alias]
    remaster = "!f() { git checkout $1 && git diff-tree -r --patch --diff-filter=DM $1..master | git apply; }; f"

(我也将单个&更改为正确说出&&。)