Shell

可以跨多個儲存庫設置 git 配置嗎?

  • August 19, 2021

Git 似乎支持三個級別的配置值:

  • 每個系統的全域設置(儲存在/etc/git-core
  • 每個使用者的全域設置(儲存在~/.gitconfig
  • 每個儲存庫的本地設置(儲存在$REPO/.git/config

這些選項涵蓋了大部分基礎,但我正在尋找一種處理第四級的方法。我有一個(非常)大的儲存庫集合,我需要為其使用與user.email平時不同的值。這些儲存庫通常是通過自動化腳本創建和操作的,並且為每個儲存庫設置本地設置很麻煩。

所有有問題的儲存庫都位於我本地系統上的某個路徑前綴下。有沒有辦法在某個地方設置一個配置值,該值將由該路徑下的所有儲存庫繼承?(有點像.htaccess設置一直沿文件系統繼承。)也許有一種方法可以在全域配置文件中設置條件值?在 UNIX 環境中可以進行哪些其他安排來處理像我這樣的一組儲存庫?

我發現沒有辦法在這第四級配置 git。唯一的方法似乎是使用git -c key=value.

我目前的 hacky 解決方案是定義一個 shell 函式作為 git 的包裝器。呼叫時,它將參數傳遞給系統 git 命令,但在檢查目前工作目錄並向命令添加額外參數(如果適用)之前不會。

function git () {
   case "$PWD" in
       /path/to/repos/*)
           command git -c user.email=alternate@credentials.org "$@"
           ;;
       *)
           command git "$@"
           ;;
   esac
}

引用自:https://unix.stackexchange.com/questions/42785