Git

如何防止在 gitconfig 文件中自動插入您的 Git 使用者名和電子郵件地址?

  • August 18, 2020

我是 Linux 世界和 git 的新手。我最近通過創建一個名為“dotfiles”的 Git 儲存庫來設置版本控制來管理我的 dotfiles。但是,每當我送出任何更改時,都會要求我輸入 Git 使用者名和密碼,然後我的使用者名和電子郵件地址會自動插入到.gitconfig該部分下的文件中user。目前,這很好,因為 Git ‘dotfiles’ 儲存庫是私有的,但在未來,我可能會將這個儲存庫公開。如果是這樣,我不希望我的使用者名和電子郵件地址顯示在.gitconfig. 我該如何防止這種情況發生?

我注意到在Matthias Bynens 的.gitconfig文件中,沒有user部分,並且有以下commit部分:

[commit]

   # https://help.github.com/articles/signing-commits-using-gpg/
   gpgsign = true

我還注意到,在Anish Athalye 的.gitconfig文件中,沒有commit部分,但該user部分包含以下內容:

[user]
   useConfigOnly = true

Git 要求您提供姓名和電子郵件地址才能送出。這些值會插入到您所做的每個送出中,並且它們必須是非空的並且滿足一些基本驗證。按照慣例,這個名字是你的個人名字,但 Git 本身並不需要這個名字,儘管你參與的項目可能需要它。

但是,話雖如此,您根本不必在任何配置文件中提供它們~/.gitconfig,甚至不必在任何配置文件中提供它們。Git 會首先讀取環境變數GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME, 以及GIT_COMMITTER_EMAIL它們是否存在。但是,通常這不是一個好主意,因為當您使用時它會覆蓋值git commit --amend,並且您想使用另一種技術。

git-commit(1)解釋其他選項:

如果(某些)這些環境變數未設置,則從配置項中獲取資訊user.nameuser.email或者,如果不存在,則從環境變數中獲取,或者,如果未設置,則從EMAIL系統使用者名和用於傳出的主機名中獲取郵件(/etc/mailname當該文件不存在時,取自並回退到完全限定的主機名)。

author.nameand及其對應的committer.name電子郵件選項會覆蓋 user.name 和 user.email(如果已設置),並且會被環境變數覆蓋。

典型的用法是只設置user.nameanduser.email變數;為更複雜的案例提供了其他選項。

我通常會留下我的名字並在我的 shell 配置中進行適當的user.name設置。EMAIL請注意,某些程序(尤其是 Homebrew)已損壞並EMAIL從環境中過濾,因此並非在所有情況下都有效。依賴系統 GECOS 欄位和郵件設置是否正確並不是一個好主意,因為通常情況並非如此。

最後,請注意您可以使用不同的配置文件,通常~/.config/git/config用於儲存您不想儲存在主文件中的值~/.gitconfig或簽入到您的 dotfiles 儲存庫。我對像這樣的值執行此操作commit.gpgsign,因為並非我使用的所有系統都有我的私鑰並且可以簽署送出,因此我是否可以簽署以及我使用什麼密鑰取決於系統。

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