Git之多个用户ID适配
生活随笔
收集整理的這篇文章主要介紹了
Git之多个用户ID适配
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、前言
- Git 是一個分布式版本控制軟件,最初目的是為更好地管理 Linux 內核開發而設計。很多著名的軟件都使用 Git 進行版本控制,其中包括 Linux 內核、X.Org 服務器和 OLPC 內核等項目的開發流程:
-
- Git –distributed-is-the-new-centralized
-
- Tweak your Git config for multiple user IDs
二、背景分析
- Git 的 git config 命令可以為 Git 設置用戶名、郵箱等全局選項和配置。其有很多選項和配置,其中一個就是 includeIf 選項,它能夠幫助我們在擁有多個 Git 用戶的時候可以靈活的切換到對應的用戶上,且使用起來非常方便。
- 比如說,在工作時間需要處理公司的工作,不管是 GitHub 也好,還是 GitLab 也罷,同時我們又在業余的時間為開源項目提交代碼做貢獻,在這種情況下,肯定不想在這兩種不同的情況下使用一個共同的配置,肯定是希望在不同的情況下使用不同的配置,尤其是當我們只有一臺計算的話。
三、選項使用
- 在 2017 年,Git 新發布的版本 2.13.0 包含了一個新的功能 includeIf 配置,可以把匹配的路徑使用對應的配置用戶名和郵箱。其中 includeIf.condition.path 變量,是 include 配置指令的一部分,其允許通過條件過濾的方式設置屬于我們自己的自定義配置。includeIf 指令支持三個子關鍵字,分別是:gitdir、gitdir/I 和 onbranch。
① gitdir
- 關鍵字 gitdir:后面的內容用于全局匹配(golb模式),如果 Git 目錄與模式匹配,則滿足 include 條件。Git 倉庫的配置,可以由程序自己發現或者通過 GIT_DIR 環境變量來配置。該模式下,可以使用標準的通配符之外,還附加了兩個額外的通配符,分別是 **/ 和 /** 兩種,它們用于匹配多個路徑。
- 如果該模式以~/ 開頭的話,~ 將被環境變量 HOME 的內容所替代;如果模式以 ./ 開頭的話,它將被包含當前配置文件的目錄替換。
- 如果該模式不以 ~/ 開頭的話,則 ./、/ 和 **/ 將自動預置。例如,將匹配模式從 foo/bar 變為 **/foo/bar 的話,將匹配 /any/path/to/foo/bar。如果模式以 / 結束的話,** 將被自動被添加到其尾部。再例如,設置模式默認為 foo/ 的話,將變成 foo/** 這樣。換句話說,它遞歸地匹配 foo 和里面的所有內容。
② gitdir/I
- 關鍵字 gitdir/I:這與 gitdir 相同,只是匹配是大小寫不敏感的,例如在不區分大小寫的文件系統上。
③ onbranch
- 關鍵字 onbranch:后面的數據被認為是一個模式,該模式下,可以使用標準的通配符之外,還附加了兩個額外的通配符,分別是 **/ 和 /** 兩種,它們用于匹配多個路徑。如果在工作樹中,當前簽出的分支的名稱與模式匹配,則滿足 include 條件。
- 如果模式以 /結束的話,** 將被自動添加。例如,設置模式默認為 foo/ 的話,將變成 foo/** 這樣,它匹配所有以 foo/ 開頭的分支,如果分支是按層次結構組織的,并且希望將配置應用于該層次結構中的所有分支,那么這是非常有用的。
四、內容配置
① 全局配置文件
- ~/.gitconfig 里面原有的 user 部分需要刪除掉;
- ~/.gitconfig 里面的 includeIf 后面的 path 需要以 / 結尾;
- 個人項目目錄和公司項目目錄需要是非包含關系,即非父子目錄等。
② 個人項目配置文件
$ cat ~/.git/.gitconfig-github [user]name = yourname-selfemail = yourname-self@gmail.com③ 公司項目配置文件
$ cat ~/.git/.gitconfig-working [user]name = yourname-selfemail = yourname-self@gmail.com總結
以上是生活随笔為你收集整理的Git之多个用户ID适配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python之字符串的134个常用操作
- 下一篇: Git之变基方式Rebase的使用