在結束本章之前,我還想和大家分享一些 Git 使用的技巧和竅門。很多使用 Git 的開發者可能根本就沒用過這些技巧,我們也不是說在讀過本書后非得用這些技巧不可,但至少應該有所了解吧。說實話,有了這些小竅門,我們的工作可以變得更簡單,更輕松,更高效。
## 自動補全
如果你用的是 Bash shell,可以試試看 Git 提供的自動補全腳本。下載 Git 的源代碼,進入 `contrib/completion` 目錄,會看到一個` git-completion.bash` 文件。將此文件復制到你自己的用戶主目錄中(譯注:按照下面的示例,還應改名加上點:`cp git-completion.bash ~/.git-completion.bash),`并把下面一行內容添加到你的` .bashrc` 文件中:
`source ~/.git-completion.bash`
也可以為系統上所有用戶都設置默認使用此腳本。Mac 上將此腳本復制到 `/opt/local/etc/bash_completion.d `目錄中,Linux 上則復制到 `/etc/bash_completion.d/` 目錄中。這兩處目錄中的腳本,都會在 Bash 啟動時自動加載。
如果在 Windows 上安裝了 msysGit,默認使用的 Git Bash 就已經配好了這個自動補全腳本,可以直接使用。
在輸入 Git 命令的時候可以敲兩次跳格鍵(Tab),就會看到列出所有匹配的可用命令建議:
~~~
$ git co<tab><tab>
commit config
~~~
此例中,鍵入 git co 然后連按兩次 Tab 鍵,會看到兩個相關的建議(命令) `commit `和 `config`。繼而輸入` m<tab> `會自動完成` git commit `命令的輸入。
命令的選項也可以用這種方式自動完成,其實這種情況更實用些。比如運行 `git log` 的時候忘了相關選項的名字,可以輸入開頭的幾個字母,然后敲 Tab 鍵看看有哪些匹配的:
~~~
$ git log --s<tab>
--shortstat --since= --src-prefix= --stat --summary
~~~
這個技巧不錯吧,可以節省很多輸入和查閱文檔的時間。
## 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 commit` 只需鍵入 `git ci` 即可。而隨著 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'
~~~
- 1. 起步
- 1.1 關于版本控制
- 1.2 Git 簡史
- 1.3 Git 基礎
- 1.4 安裝 Git
- 1.5 初次運行 Git 前的配置
- 1.6 獲取幫助
- 1.7 小結
- 2. Git基礎
- 2.1 取得項目的 Git 倉庫
- 2.2 記錄每次更新到倉庫
- 2.3 查看提交歷史
- 2.4 撤消操作
- 2.5 遠程倉庫的使用
- 2.6 打標簽
- 2.7 技巧和竅門
- 2.8 小結
- 3. Git分支
- 3.1 何謂分支
- 3.2 分支的新建與合并
- 3.3 分支的管理
- 3.4 利用分支進行開發的工作流程
- 3.5 遠程分支
- 3.6 分支的衍合
- 3.7 小結
- 4. 服務器上的Git
- 4.1 協議
- 4.2 在服務器上部署 Git
- 4.3 生成 SSH 公鑰
- 4.4 架設服務器
- 4.5 公共訪問
- 4.6 GitWeb
- 4.7 Gitosis
- 4.8 Gitolite
- 4.9 Git 守護進程
- 4.10 Git 托管服務
- 4.11 小結
- 5. 分布式Git
- 5.1 分布式工作流程
- 5.2 為項目作貢獻
- 5.3 項目的管理
- 5.4 小結
- 6. Git工具
- 6.1 修訂版本(Revision)選擇
- 6.2 交互式暫存
- 6.3 儲藏(Stashing)
- 6.4 重寫歷史
- 6.5 使用 Git 調試
- 6.6 子模塊
- 6.7 子樹合并
- 6.8 總結
- 7. 自定義Git
- 7.1 配置 Git
- 7.2 Git屬性
- 7.3 Git掛鉤
- 7.4 Git 強制策略實例
- 7.5 總結
- 8. Git與其他系統
- 8.1 Git 與 Subversion
- 8.2 遷移到 Git
- 8.3 總結
- 9. Git 內部原理
- 9.2 Git 對象
- 9.3 Git References
- 9.4 Packfiles
- 9.5 The Refspec
- 9.6 傳輸協議
- 9.7 維護及數據恢復
- 9.8 總結
- 9.1 底層命令 (Plumbing) 和高層命令 (Porcelain)