我理解Git如果您嘗試推送/拉到遠程分支,為什么會想知道您的資料。但是,如果我想擁有僅存在于我的筆記本電腦上的本地存盤庫,為什么要我在提交之前提供我的憑據?
*** Please tell me who you are.
Run
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
uj5u.com熱心網友回復:
因為作者和提交者身份是每個 GIT 提交檔案的必備組件。正如您在以下來源中看到的:
Git 物件
提交物件的格式很簡單:它指定了專案快照的頂層樹;如果有的話,父提交(上面描述的提交物件沒有任何父);作者/提交者資訊(使用您的 user.name 和 user.email 配置設定以及時間戳);一個空行,然后是提交訊息。
Git 檔案格式
提交檔案如下所示:
commit <content length><NUL>tree <tree sha> parent <parent sha> [parent <parent sha> if several parents from merges] author <author name> <author e-mail> <timestamp> <timezone> committer <author name> <author e-mail> <timestamp> <timezone> <commit message>
如果你不告訴 Git 你是誰,它就無法創建格式良好的提交檔案。所以……它堅持要你告訴它。
沒有什么可以阻止您在本地存盤庫中使用虛假身份資訊,但是如果您以后需要發布您所做的提交,它很可能會回來并咬您一口。
uj5u.com熱心網友回復:
因為這是您的身份,或者它指定了在 repo 中作業的人的身份。想象一下,兩個人出于某種原因在同一個系統上作業。所以每個人都可以在他或她自己的倉庫中以不同的身份作業。
uj5u.com熱心網友回復:
Git 提交具有與它們相關的元資料,例如時間。提交的作者(他們的名字)和作者的電子郵件是該元資料的一部分。如果它純粹是您在本地執行的專案,您可以將這些作為空字串或虛假值存根,但它在協作環境中對于諸如blame(誰撰寫了什么以及何時撰寫)之類的事情來說是非常重要的資訊。
來自:https ://git-scm.com/book/en/v2/Git-Internals-Git-Objects
[...] 作者/提交者資訊(使用您的 user.name 和 user.email 配置設定 [...]
uj5u.com熱心網友回復:
認為這封電子郵件是您的憑證是常見的錯誤,但實際上它只是 git create 提交時使用的資訊。
證據是,即使這可能是個壞主意,您也可以發送任何錯誤或不回復的電子郵件。
確保某人創建特定提交的真正安全方法是對其進行簽名。
并且您的憑據僅用于連接到遠程服務器以獲取/推送您的提交。
uj5u.com熱心網友回復:
每個提交都存盤(永久且不可更改,只要提交本身繼續存在)名稱和電子郵件地址對 - 或者更準確地說,兩個這樣的對 - 作為“作者”和“提交者”,以及兩個日期-和時間戳。Git 需要從某個地方獲取這些資訊。Git 總是從中獲取這兩個字串的傳統位置是user.nameanduser.email設定。
可以編譯Git以使用作業系統級別的資訊(如果存在)來提供名稱和電子郵件地址(如果它們不在 Git 組態檔中)。當 Git 以這種方式編譯時,如果user.name和/或未user.email設定,Git 將使用編譯的作業系統相關代碼來執行此操作。但是,還有另一個設定 ,user.useConfigOnly可以禁用此模式。 檔案對此git config進行了如下描述:
user.useConfigOnly
指示 Git 避免嘗試猜測默認值user.email,user.name,而是僅從配置中檢索值。例如,如果您有多個電子郵件地址,并且希望為每個存盤庫使用不同的電子郵件地址,那么在全域配置中將此配置選項設定為 true 以及名稱,Git 將提示您在創建新地址之前設定電子郵件地址在新克隆的存盤庫中提交。默認為false.
大概您的 Git 是在沒有猜測代碼的情況下編譯的,或者您已user.useConfigOnly設定為true(或兩者兼而有之)。
(正如其他人所指出的,這兩個設定不用于身份驗證。我認為如果配置項的名稱不同,例如commit.callme和commit.emailme/或類似的名稱,這可能會更清楚。但這些user.*設定是幾十年前選擇的;我們是現在堅持使用這些拼寫。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491542.html
標籤:混帐
