高階別名

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