天天看點

使用Git進行版本控制 不同項目怎麼設定不同的送出使用者名和郵箱?

作者:肚臍眼女孩

1.全局設定使用者名和郵箱

因為平時除了開發公司項目還會寫自己的項目或者去維護開源項目,一般情況下,公司會要求送出代碼時使用自己的真名或者拼音和公司郵箱,以前就隻會設定全局使用者名或郵箱如下

git config --global user.name "username"
git config --global user.email "[email protected]"
           

但是在維護非公司的項目時,肯定不能暴露自己的姓名和郵箱啊?是以我們面臨這個問題:不同的項目怎麼設定不同的送出使用者名和郵箱呢?

2.配置單個項目送出使用者名和郵箱

其實就是不直接使用全局配置的使用者名和郵箱,而是對某個項目單獨配置使用者名和郵箱。在目前項目下打開Git指令行,配置如下

git config user.name "username"
git config user.email "[email protected]"
           

之後可以打開 .git/config 檔案看配置生效如下

[user]
        name = username
        email = [email protected]
           

3.批量配置項目的送出使用者名和郵箱

當有多個項目需要配置Git送出資訊時,一個一個配置麻煩而且容易疏漏,那就可以使用git的includeIf配置一次性給多個項目配置送出使用者名和郵箱,來實作在某檔案夾下的所有git項目統一使用同一個git配置檔案。

  1. 首先将個人維護的項目,統一放到同一個路徑下。比如:D:\projects
  2. 建立一個.gitconfig檔案,配置資訊:
[user]
        name = username
        email = [email protected]
           
  1. 修改Git的使用者配置檔案 .gitconfig,這個配置檔案路徑一般都是 C:\Users\使用者名\.gitconfig 。添加配置資訊如下
# 配置demo項目
[includeIf "gitdir/i:~/projects/"]
        path = ~/.gitconfig
           

配置後所有在 projects 這個路徑下的項目的配置資訊就直接使用 projects/.gitconfig 中的配置了。

注:配置檔案優先級及路徑基本文法

  • Git支援多級配置,分别是system(系統級)、global(使用者級)、local(項目級)和worktree(工作區級)
  • 配置優先級: worktree > local > global > system
system系統級(安裝路徑/etc/gitconfig): 系統級配置檔案,對系統中所有使用者都普遍适用的配置。使用 git config --system讀寫的就是這個檔案。

global使用者級(C:/Users/使用者名/.gitconfig): 使用者級配置檔案,使用者目錄下的配置檔案隻适用于該使用者。使用 git config --global讀寫的就是這個檔案。

local項目級(某倉庫的本地路徑/.git/config): 項目級配置檔案,目前項目的 git倉庫目錄中的配置檔案(也就是工作目錄中的 .git/config 檔案),這裡的配置僅僅針對目前項目有效。使用 git config --local或 省略 local參數,讀寫的就是這個檔案。

worktree工作區級: 工作區級配置,此配置僅僅針對目前工作區有效。使用 git config --worktree進行配置。

每一個級别的配置都會覆寫上層的相同配置,是以 .git/config 裡的配置會覆寫 /etc/gitconfig 中的同名變量。
           
  • 基本文法
在2017年,git新釋出的版本2.13.0包含了一個新的功能includeIf配置,可以把比對的路徑使用對應的配置使用者名和郵箱;

"條件類型:比對模式" 是 includeIf 的條件;隻有當條件成立時,才會包含 path 選項指定的配置檔案;

條件類型 和 比對模式 用 : 分隔;

條件類型 共有以下幾種 gitdir、gitdir/i、onbranch;

	gitdir、gitdir/i: 路徑比對模式,表示 如果 目前 git倉庫的 .git 目錄的位置 符合 路徑比對模式, 就加載對應的配置檔案;(gitdir/i表示 比對模式忽略大小寫)
	.git 目錄的位置可能是 git 自動找到的 或是 $GIT_DIR 環境變量的值;
	onbranch: 分支比對模式, 表示 如果我們位于目前檢出的分支名稱 與 分支比對模式 比對的工作樹中,就加載對應的配置檔案;

比對模式 采用标準的 glob 通配符 再加上 表示任務路徑的通配符 **;

path 用于指定配置檔案的路徑;

可以通過寫多個 path 來表示包含多個配置檔案。
           
如有錯漏之處,敬請指正。

繼續閱讀