Learn Git

提示和技巧

在結束Git基礎這個章節前,我們將介紹有一些將會使你的Git使用經驗更簡單、方便和親切的提示和技巧。或許很多人從未運用過這些技巧,我們也不會假設你在本書的後續章節會使用它們。但你也許會想知道如何使用它們。

自動補齊

如果你用的是 Bash shell,你可以啟動Git本身寫好的自動補齊腳本。下載Git原始碼,切到contrib/completion目錄;可以看到檔案名為git-completion.bash。將它複製到你的家目錄,並加入以下指令到你的.bashrc檔案裡:

source ~/git-completion.bash

如果你想為所有使用者都自動設置Bash shell的補齊功能,在Mac系統上將這個腳本複製到/opt/local/etc/bash_completion.d目錄,若你使用Linux系統複製到 /etc/bash_completion.d/目錄。這兩個目錄中的脚本,都會在 Bash 啟動時自動載入。

如果你在Windows使用Git Bash,也就是利用Windows with msysGit安裝Git,自動補齊功能已預先設定好,可以直接使用。

在你輸入Git指令時,只要按下Tab鍵,便會列出所有合適的指令建議:

$ git co<tab><tab>
commit config

然後按下Tab鍵兩次,便會提示commit和config這些可用指令。當再輸入m<tab>便會自動補齊git commit

指令的選項也可以自動補齊,這或許是更實用的功能。舉例而言,當你下git log指令時,若忘記該輸入哪個選項,只要輸入開頭字元然後按下Tab去看看可能的選項:

$ git log --s<tab>
--shortstat  --since=  --src-prefix=  --stat   --summary

這是個好用的小技巧,或許可以省下許多輸入和查文件的時間

Git 命令別名

如果僅輸入命令的部份字元,Git並不會幫你推論出你想要下的完整命令。如果你想偷懶,不想輸入Git命令的所有字元,你可以輕易地利用git config設定別名(alias)。你也許會想要設定以下這幾個範例:

$ 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,將會發現某些命令用得頻繁;這時不妨建立新的別名提高使用效率。

利用這個技術將有助於創造出你認為應該存在的命令。舉例而言,為了提高取消暫存檔案的便利性,你可以加入以下命令:

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

這將使得下列兩個命令完全相等:

$ 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'