利用 .gitconfig
的 includeIf
語句匹配不同的遠端倉庫url切換 user
配置 gitconfig
在 ~/.gitconfig
同目錄下建立多個 .gitconfig.<你希望的名稱>
配置檔案。
在配置檔案裡寫入以下內容:
[user] name = <your name> email = <your email>
以github 和 gitee 舉例,我希望在這兩個 remote 中提交程式碼使用不同的 user(真實場景應該是公司內部倉庫應該使用真實名字提交)
[includeIf "hasconfig:remote.*.url:git@github.com:**/**/"] path = ~/.gitconfig.<你希望的名稱> [includeIf "hasconfig:remote.*.url:*gitee.com**/**/*"] path = ~/.gitconfig_gitee.<你希望的名稱2>
如果習慣使用 http
連結拉取倉庫,則需要這樣寫:
[includeIf "hasconfig:remote.*.url:https://github.com/**"] path = ~/.gitconfig.<你希望的名稱> [includeIf "hasconfig:remote.*.url:https://gitee.com/**"] path = ~/.gitconfig_gitee.<你希望的名稱2>
當然也可以同時把這幾條都寫上去。
includeIf
不支援條件或之類的語法,只能一條一條寫。
進入到對應remote的程式碼倉庫中,使用以下命令可以確認配置是否生效:
git config user.name # 輸出對應的user則代表成功
注意事項
瞭解過 gitconfig 檔案的語法後,你可能會希望這樣寫:
[includeIf "hasconfig:remote.*.url:git@github.com:**/*"] [user] name = <your name> email = <your email> [includeIf "hasconfig:remote.*.url:*gitee.com**/*"] [user] name = <your name2> email = <your email2>
這是不行的哦,會預設使用最後一個 user。