我想要创建一个Git别名来执行多个命令,但是我找不到关于如何做到这一点的文档。
来自“man config”的
alias.\* 命令别名用于git(1)命令包装器--例如,在定义"alias.last =cat提交头“之后,调用"git”等效于"git file提交头“。为了避免与脚本使用的混淆和麻烦,会忽略隐藏现有Git命令的别名。参数被空格分隔,支持通常的shell引用和转义。引号对和反斜杠可以用来引用它们。如果别名展开以感叹号作为前缀,则它将被视为shell命令。例如,定义"alias.new = !gitk --所有--不是ORIG_HEAD",调用"git“相当于运行shell命令"gitk -不是ORIG_HEAD”。注意,shell命令将从存储库的顶层目录执行,该目录可能不一定是当前目录。通过从原始当前目录运行git解析-显示前缀,将GIT_PREFIX设置为返回。参见git-rev-parse(1)。
发布于 2013-09-17 22:14:00
$ git config alias.q '!echo a; echo b'
$ git q输出:
a
b我认为这是(粗略地)记录在man git-config下的alias.*中。
注意,与普通别名不同,git命令应该包括git。造成这种情况的原因是,它被视为shell命令,而不是git命令(请参阅问题中引用的手册)。例如,要链
git init和
git commit --allow-empty -m "empty initial commit"有必要创造
"!git init; git commit --allow-empty -m \"empty initial commit\""化名。
发布于 2014-02-07 14:57:56
假设命令是echo a和echo b (不是a和b),可以为别名q添加多个命令
从命令行:
git config alias.q '!echo a; echo b'
直接在配置文件中:
[alias]
q = "!echo a; echo b"对于更复杂的事情,定义一个shell函数并调用它:
'!f() { echo a ; echo b ; }; f'
要将参数传递给命令,请参见:
Git alias with positional parameters
Git Alias - Multiple Commands and Parameters
基于Jonathan Wakely的评论
发布于 2017-02-09 10:06:16
补充答案:我经常需要更复杂的命令来决定通过位置参数做什么,并在参数上分支,或者通过参数或输入文件循环。
这样的命令对于单行来说太复杂了,很难在一行上阅读和编辑。但我找到了一种非常简单的方法,可以从文件中执行非常复杂的命令:
假设存储库中有一个名为alias/cmd的文件:
!function f {
if [ -z "$1" ]
then echo "Please give me some argument!" 1>&2
exit -1
fi
echo "Hello $1"
}; f然后你可以简单地说
git config alias.cmd "`cat alias/cmd`"从文件中定义别名cmd,并且
git config --get alias.cmd > alias/cmd要将定义的别名写入文件,请执行以下操作。
https://stackoverflow.com/questions/18860696
复制相似问题