我開始學習如何使用 git,我對一些關于安全性的問題非常懷疑。
我需要在我的個人計算機和我的作業計算機之間管理我的代碼(在同一個 GitHub 帳戶中),所以我在兩者上都安裝了 git。當我克隆我的存盤庫(個人或私人),對其進行更改并將其推回時,它會接受推送,而無需驗證誰在推送它。
所以我的問題是:git 如何知道誰在推送到我的 GitHub 存盤庫?如果有人使用“git clone https://github.com/username/myrepo.git”,他們能推送嗎?我怎樣才能避免這種情況?
我在其他帖子中讀到了不可能的內容,但我仍然不明白 git 在哪個步驟中驗證了誰在推動。
uj5u.com熱心網友回復:
不,不允許任何人推送到存盤庫。GitHub 上的身份驗證通過 PAT(個人訪問令牌)、通過憑據管理器的瀏覽器登錄或使用 SSH 密鑰完成。所有 3 個都系結到您的 GitHub 帳戶。
默認情況下,只有倉庫的所有者可以推送到它,但您可以向您的倉庫添加更多用戶。
進一步閱讀:
- GitHub 身份驗證
uj5u.com熱心網友回復:
git 如何知道誰在推送到我的 GitHub 存盤庫?
簡短的回答是“它沒有”或“Git 不知道”。
Git 中的每個提交都有兩個 name email-address date-and-time-stamp 欄位,Git 稱之為author和committer。進行提交的人控制這兩個欄位,其中包含幾乎任意的字串(Git 從您的user.nameanduser.email設定中讀取,假設您已將它們設定為1)。一旦提交,這兩個就不能更改——如果它們是錯誤的,你必須停止使用那個提交并做出一個新的和改進的提交,其中包含正確的內容。(新的和改進的提交可能看起來完全一樣,但它會有一個不同的大丑哈希 ID,舊的哈希 ID 仍然會參考舊的提交。通過使用git commit --amend或類似的,您可以將舊提交“踢出”分支,以便只顯示新的更正提交。)
正如knittl 回答的那樣,Git Hub具有 GitHub 端訪問控制。您必須首先通過 GitHub 為您提供的任何方式向 GitHub 進行身份驗證。此身份驗證程序使 GitHub 能夠決定他們認為您是誰,進而控制他們是否允許git push繼續進行。但這不是 Git 的事情,而是 GitHub 的事情。
請注意,所有2 個網路托管服務提供商(例如,Bitbucket 和 GitLab)都使用極其相似的身份驗證技巧,出于同樣的相當明顯的原因。
1如果您沒有設定它們,Git 有一組編譯的程序,它遵循:
- 它檢查
user.useConfigOnly布爾配置設定。如果這是true或任何其他布爾等效項,它會因致命錯誤而死。 - 否則,如果 Git 被編譯為這樣做,它會使用一些作業系統和/或構建特定的方法來猜測您的姓名和電子郵件地址。如果可行,它會使用猜測。
- 最后,所有其他方法都失敗了,它會因您可以在步驟 1 中選擇的相同致命錯誤而死。
關鍵user.useConfigOnly是讓您能夠強制您在每個存盤庫中進行設定user.name,user.email以防您想在每個存盤庫而不是全域為您的用戶狀態上執行此操作。
2可能有些不是,但我想知道誰會使用它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528623.html
標籤:混帐安全github
上一篇:軟重置到我的最后一次提交后該怎么辦?先提交還是先拉?或先拉然后提交,還是...?
下一篇:新的/合并的/洗掉的分支不更新
