Git
Chapters ▾ 2nd Edition

2.7 Git 基礎 - Git Aliases

Git Aliases

在結束「Git 基礎」這個章節以前,在此想和你分享一些使用 Git 的技巧,讓你能夠更簡易且友善的使用 Git——別名(alias)。 在本書的後面章節,我們不會再提到,也不會假設你有使用別名的技巧。 但是你可能會需要知道如何使用它。

如果你只打了某個指令的一部份,Git 並不會自動推測出你想要的指令。 如果你懶得輸入完整的 Git 指令,你可以輕易的使用 git config 來替指令設定別名。 下面有一些你可能會想要設定別名的範例:

$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status

舉其中一個例子來說,這樣的設定意味著你可以只打 git ci 而不需要打 git commit。 隨著你深入使用 Git,你將會發現某些指令用的很頻繁,不要猶豫,馬上建立新的指令別名。

這個非常有用的技術還能用來創造一些你覺得應該存在的指令。 舉例來說,為了提高 unstage 檔案的方便性,你可以加入你自己的 unstage 別名:

$ git config --global alias.unstage 'reset HEAD --'

而且這個 unstage 別名會讓以下兩個指令有相同的功用:

$ git unstage fileA
$ git reset HEAD -- fileA

這樣看起來更加簡單明瞭了。 此外,大家通常還會新增一個 last 指令如下:

$ git config --global alias.last 'log -1 HEAD'

如此一來,你可以更簡易的看到最後的提交訊息:

$ git last
commit 66938dae3329c7aebe598c2246a8e6af90d04646
Author: Josh Goebel <dreamer3@example.com>
Date:   Tue Aug 26 19:48:51 2008 +0800

    test for current head

    Signed-off-by: Scott Chacon <schacon@example.com>

如你所見,Git 會將別名直接取代成你別名內設定的指令。 然而,你可能會想要執行一個外部指令,而非 git 下的子指令。 在這個情況下,你需要在指令的開頭加個 ! 字元。 這個技巧在你如果想為 Git 倉儲撰寫自製工具時很有用。 我們可以用以下的範例設定 git visual 執行 gitk

$ git config --global alias.visual '!gitk'