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的基本使用

主要是指一下基本操做:linux

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

安裝

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

ssh登入配置

安裝完成以後,須要考慮和遠程的倉庫創建鏈接,就須要帳號和密碼,不管是githubgitlab等,都須要一個帳戶名,能夠註冊完成,而後設置:github

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便可;ssh

能夠pull和push代碼測試是否成功。分佈式

git命令使用

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

多用戶配置

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

  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 = yourname-self@gmail.com

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

[user]
    name = yourname-work
    email = yourname-work@yourCompanyName.com

遇到的問題:

  1. 文件~/.gitconfig裏面的includeIf後面的path最後須要/結尾
  2. 文件~/.gitconfig裏面原有的user部分須要刪除
  3. 我的工程目錄和公司工程目錄須要要求是非包含關係,就是這兩個工程目錄配置路徑不能夠是父子關係。
相關文章
相關標籤/搜索