高级别名
如果你用 !
作为前缀,Git 允许你在别名中使用非 git 命令和完整的 sh
shell 语法。
在你的~/.gitconfig
文件中:
[alias]
temp = !git add -A && git commit -m "Temp"
这些前缀别名中提供完整 shell 语法的事实也意味着你可以使用 shell 函数来构造更复杂的别名,例如利用命令行参数的别名:
[alias]
ignore = "!f() { echo $1 >> .gitignore; }; f"
上面的别名定义了 f
函数,然后使用传递给别名的任何参数运行它。所以运行 git ignore .tmp/
会将 .tmp/
添加到你的 .gitignore
文件中。
实际上,这个模式非常有用,Git 为你定义了 $1
,$2
等变量,所以你甚至不需要为它定义一个特殊的函数。 (但请记住,即使你通过这些变量访问它,Git 也会附加参数,所以你可能想在最后添加一个伪命令。)
请注意,以这种方式前缀为 !
的别名是从 git checkout 的根目录运行的,即使当前目录在树中更深。这可以是从根运行命令而不必明确地使用 cd
的有用方法。
[alias]
ignore = "! echo $1 >> .gitignore"