前言
Git 起手式中很重要的一件事就是設定作者資訊,因為不同的專案想要顯示的作者資訊可能會想要不同。例如:自己的專案當然就是以個人的 E-Mail 作為作者資訊,但公司的專案可能就會需要以公司的 E-Mail 來顯示。這裡記錄如何設定預設作者資訊、特定路徑預設的作者資訊、單一 Repo 作者資訊。
預設作者資訊設定
預設的作者資訊會儲存在家目錄中的 .gitconfig
(即 ~/.gitconfig
),因此修改預設作者資訊的方法有兩個,一個是透過 Git 指令修改該檔案,一個則是直接修改檔案本身。這裡演示的是如何透過指令修改,修改檔案的部分只需要將 ~/.gitconfig
修改如同指令產生的結果即可
1 | $ git config --global user.name "Wei-Ren Xue" # 修改預設的作者名稱 |
這樣的情況下,在任何 Repo 中預設的作者資訊已被設定完成,所以 Commit 的作者資訊都會被壓成 Wei-Ren Xue <weirenxue@gmail.com>
1 | % git log |
可以透過 --show-origin 知道我們的作者資訊從何而來
1 | $ git config --show-origin user.name |
特定路徑預設的作者資訊設定
這時候就會想到:會不會每次要 Commit 到公司專案時,就要使用一次 git config --global
重設資訊,要 Commit 自己的專案時又要再執行一次指令,這樣超麻煩!
幸好,Git 提供 Conditional includes 讓我們可以在指定的情況使用指定的 .gitconfig
。現在假設公司的專案都會放在 ~/company
目錄底下,並且在該目錄底下創建一個 .gitconfig
1 | # ~/company/.gitconfig |
在 ~/.gitconfig
檔案中加入下方內容,意思是只要在路徑為 ~/company
底下的 Repo 預設都會使用 path
指定的設定檔 (此為 ~/company/.gitconfig
)
1 | [includeIf "gitdir:~/company/**"] |
同樣地,可以透過 --show-origin 知道我們的作者資訊從何而來。當然,執行指令之前,需要先進入 ~/company
目錄下的 Repo 才能看得出來差異哦!
1 | $ git config --show-origin user.name |
單一 Repo 作者資訊設定
預設作者資訊設定、特定路徑預設的作者資訊設定這兩種設定方式都理解後,設定單一 Repo 作者資訊的原理也是同樣的,每個 Repo 中都有屬於自己的設定檔案,即為 Repo 底下的 .git/config
。相同地,可以使用指令或直接更新檔案內容的方式達到設定作者資訊的修改。記住:需要先到 Repo 目錄中再執行指令
1 | $ git config user.name "Wei-Ren Xue" |
有沒有覺得很眼熟?沒錯,就是比預設作者資訊設定少 --global
而已!
修正 Commit 後的 Author 資訊
Commit 後發現不小心使用錯誤的作者資訊怎麼辦?有一個補救的辦法,使用下方指令便能修正,但這個補救方式僅限於最新的 Commit 適用。所以建議在 Commit 之前還是多多使用 --show-origin 來確認當前的作者資訊是什麼吧!
1 | $ git commit --amend --reset-author |
設定檔載入的優先順序
可以用一個比較容易的方式記憶,就是影響的範圍越小,順序越前面。
因此 Git 會先載入 .git/config
查看有沒有需要的資訊,若無才再找看看有沒有設定 ~/your/path/.gitconfig
,都沒有的話最後才是使用 ~/.gitconfig
內的資訊。