2016-10-25 24 views
2

我發現我還沒有在Git中配置user.name變量:git config user.name什麼都不打印(還有--system--global--local)。爲什麼Git在未配置時知道我的名字?

我的全名也不包含在env的輸出中,只有我的登錄名,這是不同的。

儘管如此,我所有的提交都歸於我真實的名字和姓氏。

Git如何知道它?


澄清:

  • 我的全名是包含在由git var -l命令顯示的GIT_COMMITTER_IDENTGIT_AUTHOR_IDENT變量。 (我想我的問題是:它是如何到達那裏的?)

  • 我正在談論一個本地存儲庫。但是我在Github上克隆的同一臺計算機上有其他倉庫。

  • 我正在使用Debian系統。

  • 我的全名包含在getent passwd的輸出中。

+1

這可能是您的計算機的用戶名。 – RobertAKARobin

+1

顯示'git var -l'的輸出。 – PetSerAl

+0

@PetSerAl好的,我的名字就在那裏。但是如何?你能解釋一下這個答案是如何工作的嗎? – mkrieger1

回答

1

這可能是你的環境變量設置的情況下:

一個Git提交對象的最終創作通常是由 它使用這些環境變量的git提交樹,完成作爲其主要信息源 ,只有在 這些不存在的情況下才會回落到配置值。

GIT_AUTHOR_NAME是「作者」字段中人類可讀的名稱。

GIT_AUTHOR_EMAIL是「作者」字段的電子郵件地址。

GIT_AUTHOR_DATE是用於「作者」字段的時間戳。

GIT_COMMITTER_NAME設置「提交者」字段的人名。

GIT_COMMITTER_EMAIL是「提交者」字段的電子郵件地址。

GIT_COMMITTER_DATE用於「提交者」字段中的時間戳。

EMAIL是在未設置user.email 配置值的情況下的回退電子郵件地址。如果沒有設置,Git會回退到 系統用戶名和主機名。

來源:https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables

+0

這是很好的知道,但這些環境變量都沒有在我的情況下設置。 – mkrieger1

2

除非在Git的配置或環境變量中指定,Git會嘗試查找用戶名的密碼文件。查找在fmt_ident函數中執行。

相關問題