高階別名
如果你用 !
作為字首,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"