一般在新的系統上,我們都需要先配置下自己的 Git 工作環境。配置工作只需一次,以后升級時還會沿用現在的配置。當然,如果需要,你隨時可以用相同的命令修改已有的配置。
Git 提供了一個叫做 `git config` 的工具(譯注:實際是 `git-config` 命令,只不過可以通過 git 加一個名字來呼叫此命令。),專門用來配置或讀取相應的工作環境變量。而正是由這些環境變量,決定了 Git 在各個環節的具體工作方式和行為。這些變量可以存放在以下三個不同的地方:
* `/etc/gitconfig` 文件:系統中對所有用戶都普遍適用的配置。若使用 `git config` 時用 `--system` 選項,讀寫的就是這個文件。
* `~/.gitconfig `文件:用戶目錄下的配置文件只適用于該用戶。若使用 `git config` 時用` --global` 選項,讀寫的就是這個文件。
* 當前項目的 Git 目錄中的配置文件(也就是工作目錄中的 `.git/config` 文件):這里的配置僅僅針對當前項目有效。每一個級別的配置都會覆蓋上層的相同配置,所以 `.git/config` 里的配置會覆蓋 `/etc/gitconfig `中的同名變量。
在 Windows 系統上,Git 會找尋用戶主目錄下的 .gitconfig 文件。主目錄即 `$HOME` 變量指定的目錄,一般都是`C:\Documents and Settings\$USER。`此外,Git 還會嘗試找尋 `/etc/gitconfig` 文件,只不過看當初 Git 裝在什么目錄,就以此作為根目錄來定位。
## 用戶信息
第一個要配置的是你個人的用戶名稱和電子郵件地址。這兩條配置很重要,每次 Git 提交時都會引用這兩條信息,說明是誰提交了更新,所以會隨更新內容一起被永久納入歷史記錄:
~~~
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
~~~
如果用了 `--global `選項,那么更改的配置文件就是位于你用戶主目錄下的那個,以后你所有的項目都會默認使用這里配置的用戶信息。如果要在某個特定的項目中使用其他名字或者電郵,只要去掉 `--global` 選項重新配置即可,新的設定保存在當前項目的 `.git/config` 文件里。
## 文本編輯器
接下來要設置的是默認使用的文本編輯器。Git 需要你輸入一些額外消息的時候,會自動調用一個外部文本編輯器給你用。默認會使用操作系統指定的默認編輯器,一般可能會是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的話,可以重新設置:
`$ git config --global core.editor emacs`
## 差異分析工具
還有一個比較常用的是,在解決合并沖突時使用哪種差異分析工具。比如要改用 vimdiff 的話:
`$ git config --global merge.tool vimdiff`
Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的輸出信息。當然,你也可以指定使用自己開發的工具,具體怎么做可以參閱第七章。
## 查看配置信息
要檢查已有的配置信息,可以使用 `git config --list` 命令:
~~~
$ git config --list
user.name=Scott Chacon
user.email=schacon@gmail.com
color.status=auto
color.branch=auto
color.interactive=auto
...
~~~
有時候會看到重復的變量名,那就說明它們來自不同的配置文件(比如 `/etc/gitconfig `和` ~/.gitconfig`),不過最終 Git 實際采用的是最后一個。
也可以直接查閱某個環境變量的設定,只要把特定的名字跟在后面即可,像這樣:
~~~
$ git config user.name
Scott Chacon
~~~
- 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)