1.全局設置用戶名和郵箱 因為平時除了開發公司項目還會寫自己的項目或者去維護開源項目,一般情況下,公司會要求提交代碼時使用自己的真名或者拼音和公司郵箱,以前就只會設置全局用戶名或郵箱如下 git config --global user.name "username" git config --gl ...
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配置文件。
- 首先將個人維護的項目,統一放到同一個路徑下。比如:D:\projects
- 創建一個.gitconfig文件,配置信息:
[user]
name = username
email = [email protected]
- 修改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 來表示包含多個配置文件。
如有錯漏之處,敬請指正。