git config配置多用戶場景實踐

git

git是一個分佈式版本控制軟件,最初由林納斯·託瓦茲創作,於2005年以GPL發佈。最初目的是爲更好地管理Linux內核開發而設計。應注意的是,這與GNU Interactive Tools(一個類似Norton Commander界面的文件管理器)有所不同。git最初的開發動力來自於BitKeeper和Monotone。git最初只是作爲一個可以被其他前端(比如Cogito或Stgit)包裝的後端而開發的,但後來git內核已經成熟到可以獨立地用作版本控制。很多著名的軟件都使用git進行版本控制,其中包括Linux內核、X.Org服務器和OLPC內核等項目的開發流程。

更多相關介紹可以查看百科

git的基本使用

主要是指一下基本操作:

  1. 安裝
  2. ssh登入配置
  3. 命令使用

安裝

根據自己的系統進行選擇安裝方式,可以使用命令行安裝,也可以使用安裝包安裝,git官方安裝包地址

ssh登入配置

安裝完成之後,需要考慮和遠程的倉庫建立連接,就需要賬號和密碼,無論是githubgitlab等,都需要一個賬戶名,可以註冊完成,然後設置:

git config --global user.name "yourName"
git config --global user.email "yourEmail"

爲了避免每次push代碼都需要密碼之類的,我們通過ssh來配置;執行:

ssh-keygen

一路enter即可,在~/.ssh/下會生成兩個文件,複製其中的公鑰:

pbcopy < ~/.ssh/id_rsa.pub

進入遠程倉庫的個人中心,https://github.com/settings/profile;會找到關於SSH and GPG keys,有一個New SSH key的按鈕,點擊後,可以黏貼上剛複製的公鑰,然後Add SSH key即可;

可以pull和push代碼測試是否成功。

git命令使用

  1. 對於win10系統,推薦升級後使用好的官方新出的終端,Windows Terminal,需要當前最新的win10版本,用起來挺好的,可以再Microsoft的官方商城下載體驗。
  2. 對於mac或者linux用戶,推薦配置 oh-my-zsh, 這個oh-my-zsh默認安裝上了git plugin~/.zshrc配置文件中,可以使用很多的簡潔命令,git簡寫命令集合

多用戶配置

git-config的官網巨長文檔,開發人員經常遇到這樣的問題,我們的公司倉庫和個人倉庫的用戶名和郵箱配置是有區別的,爲了能夠很好地區分工程上傳到不同的遠程倉庫,我們需要分別處理,保證在不同的工程使用不同的賬戶

  1. 按工程配置多用戶
  2. 按目錄配置多用戶

按工程配置多用戶

目前git的配置變量可以放在三個地方:

  1. /etc/gitconfig 系統配置,對所有用戶都生效。
  2. ~/.gitconfig 用戶配置,僅對當前用戶生效。

    git config --global user.name "yourName"
    git config --global user.email "yourEmail"
  3. projectRootPath/.git/config 項目根目錄配置,僅對當前項目生效。對應:進入工程根目錄執行

    git config user.name "yourName"
    git config user.email "yourEmail"

三層是從3-2-1的優先級處理的,這樣我們可以對不同工程完成不同的配置,這個在工程數量多的時候簡直不忍直視,所以需要尋找更好的方法。

按目錄配置多用戶

在2017年,git新發布的版本2.13.0包含了一個新的功能includeIf配置,可以把匹配的路徑使用對應的配置用戶名和郵箱;

~/目錄下面存在三個配置文件,

  • .gitconfig // 全局通用配置文件
  • .gitconfig-self // 個人工程配置文件
  • .gitconfig-work // 公司工程配置文件

全局通用配置文件~/.gitconfig裏面的內容是:主要是通過includeIf配置匹配不用的目錄映射到不同配置文件上,

[includeIf "gitdir:~/self-workspace/"]
    path = .gitconfig-self
[includeIf "gitdir:~/workspace/"]
    path = .gitconfig-work

個人工程配置文件~/.gitconfig-self

[user]
    name = yourname-self
    email = [email protected]

公司工程配置文件~/.gitconfig-work

[user]
    name = yourname-work
    email = [email protected]

遇到的問題:

  1. 文件~/.gitconfig裏面的includeIf後面的path最後需要/結尾
  2. 文件~/.gitconfig裏面原有的user部分需要刪除
  3. 個人工程目錄和公司工程目錄需要要求是非包含關係,就是這兩個工程目錄配置路徑不可以是父子關係。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章