首页 > 解决方案 > 如何在 Git 别名中使用“$@”?

问题描述

git log --name-status --pretty=format: | sed '/^$/d' | cut --fields=2- | sort | uniq --count | sort --numeric-sort --reverse | head打印 Git 存储库中编辑最多的 10 个文件(基于this)。我想most-edited为这个命令创建一个 Git 别名,但要注意:该命令应该将任何额外的参数放入git log命令中。这将允许我运行git most-edited 'foo bar/' baz/以获取foo bar(注意空格)和baz目录中编辑最多的文件。

在脚本中,这就像添加-- "$@"git log命令一样简单。但是,如果我创建别名most-edited = !git log --name-status --pretty=format: -- "$@" | sed '/^$/d' | cut --fields=2- | sort | uniq --count | sort --numeric-sort --reverse | head,则参数将改为传递给管道中的最后一个命令,head. 有什么方法可以将参数传递给git log?

标签: git

解决方案


在别名中,定义一个函数,然后立即调用该函数。扩展别名时,命令行上的任何附加参数都将成为该函数的参数。

most-edited = '!f () { git log --name-status --pretty=format: -- "$@" | sed '/^$/d' | cut --fields=2- | sort | uniq --count | sort --numeric-sort --reverse | head; }; f'

推荐阅读