Git 技巧和竅門

2018-09-27 15:36 更新

在結(jié)束本章之前,我還想和大家分享一些 Git 使用的技巧和竅門。很多使用 Git 的開(kāi)發(fā)者可能根本就沒(méi)用過(guò)這些技巧,我們也不是說(shuō)在讀過(guò)本書(shū)后非得用這些技巧不可,但至少應(yīng)該有所了解吧。說(shuō)實(shí)話,有了這些小竅門,我們的工作可以變得更簡(jiǎn)單,更輕松,更高效。

自動(dòng)補(bǔ)全

如果你用的是 Bash shell,可以試試看 Git 提供的自動(dòng)補(bǔ)全腳本。下載 Git 的源代碼,進(jìn)入 contrib/completion 目錄,會(huì)看到一個(gè)git-completion.bash 文件。將此文件復(fù)制到你自己的用戶主目錄中(譯注:按照下面的示例,還應(yīng)改名加上點(diǎn):cp git-completion.bash ~/.git-completion.bash),并把下面一行內(nèi)容添加到你的.bashrc 文件中:

source ~/.git-completion.bash
也可以為系統(tǒng)上所有用戶都設(shè)置默認(rèn)使用此腳本。Mac 上將此腳本復(fù)制到 /opt/local/etc/bash_completion.d目錄中,Linux 上則復(fù)制到 /etc/bash_completion.d/ 目錄中。這兩處目錄中的腳本,都會(huì)在 Bash 啟動(dòng)時(shí)自動(dòng)加載。

如果在 Windows 上安裝了 msysGit,默認(rèn)使用的 Git Bash 就已經(jīng)配好了這個(gè)自動(dòng)補(bǔ)全腳本,可以直接使用。

在輸入 Git 命令的時(shí)候可以敲兩次跳格鍵(Tab),就會(huì)看到列出所有匹配的可用命令建議:

$ git co<tab><tab>
commit config

此例中,鍵入 git co 然后連按兩次 Tab 鍵,會(huì)看到兩個(gè)相關(guān)的建議(命令) commitconfig。繼而輸入m<tab>會(huì)自動(dòng)完成git commit命令的輸入。

命令的選項(xiàng)也可以用這種方式自動(dòng)完成,其實(shí)這種情況更實(shí)用些。比如運(yùn)行 git log 的時(shí)候忘了相關(guān)選項(xiàng)的名字,可以輸入開(kāi)頭的幾個(gè)字母,然后敲 Tab 鍵看看有哪些匹配的:

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

這個(gè)技巧不錯(cuò)吧,可以節(jié)省很多輸入和查閱文檔的時(shí)間。

Git 命令別名

Git 并不會(huì)推斷你輸入的幾個(gè)字符將會(huì)是哪條命令,不過(guò)如果想偷懶,少敲幾個(gè)命令的字符,可以用 git config 為命令設(shè)置別名。來(lái)看看下面的例子:

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

現(xiàn)在,如果要輸入 git commit 只需鍵入 git ci 即可。而隨著 Git 使用的深入,會(huì)有很多經(jīng)常要用到的命令,遇到這種情況,不妨建個(gè)別名提高效率。

使用這種技術(shù)還可以創(chuàng)造出新的命令,比方說(shuō)取消暫存文件時(shí)的輸入比較繁瑣,可以自己設(shè)置一下:

$ git config --global alias.unstage 'reset HEAD --'
這樣一來(lái),下面的兩條命令完全等同:

$ git unstage fileA
$ git reset HEAD fileA

顯然,使用別名的方式看起來(lái)更清楚。另外,我們還經(jīng)常設(shè)置 last命令:

$ git config --global alias.last 'log -1 HEAD'
然后要看最后一次的提交信息,就變得簡(jiǎn)單多了:

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

可以看出,實(shí)際上 Git 只是簡(jiǎn)單地在命令中替換了你設(shè)置的別名。不過(guò)有時(shí)候我們希望運(yùn)行某個(gè)外部命令,而非 Git 的子命令,這個(gè)好辦,只需要在命令前加上 ! 就行。如果你自己寫了些處理 Git 倉(cāng)庫(kù)信息的腳本的話,就可以用這種技術(shù)包裝起來(lái)。作為演示,我們可以設(shè)置用git visual啟動(dòng) gitk:

$ git config --global alias.visual '!gitk'
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)