通常,git 别名仅限于单个命令:
git config --global alias.ci commit
所以,git commit
你可以这样做git ci
但似乎你也可以在其中插入一个函数:
git config --global alias.up-sub '!f() { cd $1 && git checkout master && git pull && git submodule update --init --recursive; }; f'
这允许您调用git up-sub some-submodule
问题是:它是如何运作的?我没有!f()
在任何其他上下文中看到过该语法。
答案1
看起来像常规的 shell 函数定义和调用。只有爆炸声很引人注目,但快速搜索一下git-config(1)
手册就会看到解释:
如果别名扩展以感叹号为前缀,它将被视为 shell 命令。例如,定义“alias.new = !gitk --all --not ORIG_HEAD”,调用“git new”相当于运行shell命令“gitk --all --not ORIG_HEAD”。请注意,shell 命令将从存储库的顶级目录执行,该目录不一定是当前目录。
如果没有 bang,它将为git
子命令起别名。