这个 git 别名是如何工作的?

这个 git 别名是如何工作的?

通常,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子命令起别名。

相关内容