在推特上看到 @WanCW 的推文,才知道 git config 有 includeIf ,所以來研究一下怎麼用。
先看 git config 的說明:https://git-scm.com/docs/git-config ,用法蠻簡單的。
這邊先做假設情境
- 使用者家目錄是 /home/user ,也就是 HOME=/home/user
- $HOME/CompanyProjects 是公司專案目錄,而公司的 git server 是 gitlab.com
- $HOME/SideProjects 是自己的專案目錄,自己的 git server 也是 gitlab.com
- 公司用的 ssh key 在 $HOME/.ssh/company.pem
- 自己用的 ssh key 在 $HOME/.ssh/id_rsa
為了避免使用者名稱、email 跟 SSH key 混用,這時候 git config 該怎麼設定呢?
首先在 $HOME 下建立 .gitconfig.d 目錄,在裡面放入 company.inc 與 side.inc,這兩個檔案的內容,在後面會提到。
先編輯 $HOME/.gitconfig
; include if $GIT_DIR is under /home/user/CompanyProjects/ [includeIf “gitdir:/home/user/CompanyProjects/"] path = /home/user/.gitconfig.d/company.inc ; include if $GIT_DIR is under /home/user/SideProjects/ [includeIf “gitdir:/home/user/SideProjects/"] path = /home/user/.gitconfig.d/side.inc
再來是 company.inc 與 side.inc
; $HOME/.gitconfig.d/company.inc [user] email = user@company.com name = user(company) [core] sshcommand=ssh -i /home/user/.ssh/company.pem
; $HOME/.gitconfig.d/side.inc [user] email = user@example.com name = user
在這樣設定之後,當切換到 $HOME/CompanyProjects 目錄下任一個專案目錄時,git 會使用
company.inc 裡的設定;切換到 $HOME/SideProjects 目錄下任一個專案目錄時,git 會使用 side.inc
裡的設定。
那也可以針對個別專案去設定,假設 $HOME/CompanyProjects/ProjectA 目錄會用到不一樣的,那就在 .gitconfig 加入
[includeIf “gitdir:~/CompanyProjects/ProjectA/“] path = ~/.gitconfig.d/projecta.inc
然後在 $HOME/.gitconfig.d 下新增 projecta.inc 即可。
沒有留言:
張貼留言