嵌套命令中的Git别名

时间:2013-05-27 16:00:13

标签: git alias

我知道如何创建简单的别名,但是有一个非常有用的命令可以从磁盘中取消已删除的文件,但我无法使其正常工作。

git rm $(git ls-files --deleted)

(从这里Removing multiple files from a Git repo that have already been deleted from disk

我尝试过:

git config --global alias.cleandeleted 'rm $(git ls-files --deleted)'

但是当我写道:

git cleandeleted

我收到以下错误:

error: unknown option `deleted)'
usage: git rm [options] [--] <file>...

    -n, --dry-run         dry run
    -q, --quiet           do not list removed files
    --cached              only remove from the index
    -f, --force           override the up-to-date check
    -r                    allow recursive removal
    --ignore-unmatch      exit with a zero status even if nothing matched

1 个答案:

答案 0 :(得分:4)

问题是$(...)。正如您所定义的那样,git只处理git intern命令,并且不知道如何处理$(...)

有一个技巧可以让你指挥工作:

git config --global alias.cleandeleted '!git rm $(git ls-files --deleted)'

由于!别名的工作原理,就好像命令直接发给命令行一样。