我有 2 個 github 用戶帳戶(私人和作業),稱他們為Allison和Bob。
我有一個 bash 腳本,稱之為:allison_git:
ssh-add -D
eval $(ssh-agent -s)
git config --global credential.helper wincred
git config --global credential.useHttpPath true
git config --global user.name Allison
git config --global user.email [email protected]
ssh-add ~/.ssh/allison_git_rsa
ssh -T [email protected]
如果艾莉森一切順利,我會得到: 嗨,艾莉森!您已成功通過身份驗證,但 GitHub 不提供 shell 訪問權限。
所以我可以使用我擁有的腳本在用戶之間切換。偉大的。
但是...假設用戶 Bob 用于我的作業,而 Allison 用于我的私人,我正在處理我的作業存盤庫但忘記切換到 Bob。我的提交將作為用戶 Allison 而不是 Bob。
我不知道為什么(我猜是因為他們在同一臺計算機上?!) 問:我如何限制用戶 Allison 使用 Bobs 回購和反向?我使用 bash allison_git / bob_git處理這一切的方法會導致這一切嗎?
注意:我在他的 github 帳戶上添加了 bob 的 pub 密鑰 (bob_git_rsa) (settings-->SSH and PGP Keys),對于 allison (allison_git_rsa) 也是如此。鑰匙不一樣
uj5u.com熱心網友回復:
您可以使用條件 gitconfig 指令,如下所示:
# All work Git repositories are in a subdirectory of ~/work.
# All other Git repositories are outside ~/work.
[includeIf "gitdir:~/work/"]
path = .gitconfig.work
用戶名/電子郵件 in.gitconfig.work將是 Bob 的,而默認名稱/電子郵件將是 Alice,用于外部任何其他存盤庫~/.work。
請注意,這git config --global credential.helper wincred僅適用于 HTTPS URL,如果您使用 SSH 進行身份驗證,則不使用。
uj5u.com熱心網友回復:
有很多方法可以解決這個問題——例如,除了VonC 的回答之外,你可以在你的筆記本電腦上設定兩個不同的登錄帳戶——但是無論你選擇什么路徑,記住這些專案:
Git不做任何權限檢查。Git 依賴于其他一些軟體來執行任何所需的權限檢查。Git 只是嘗試做任何你要求的事情,計算機要么允許,要么不允許。
Git不會向另一臺計算機驗證您的身份:這是一種權限和訪問型別的事情。Git 確實在使用 URL 時內置了對憑證助手
https://的支持,并內置了在使用 URL 時呼叫 ssh 的支持ssh://(以及 . 的user@host:path/to/repo.git縮寫ssh://user@host/path/to/repo.git)。但這只是為了讓 Git 可以運行其他允許身份驗證的外部程式。這又回到了上面的第一點。user.nameanduser.email設定幾乎是任意字串(盡管您必須在此處使用有效文本并且不能在用戶名中放置尖括號),Git 只是將其塞入新提交中而沒有真正查看它們。他們純粹是為了提供資訊。這又回到了上面的第一點。
要使用不同的 ssh 配置,我認識的大多數人都使用 ssh 的“主機別名”技巧。這適用于 VonC 的答案中提到的條件包含技巧,尤其是當您將它與 Git 的url.<replacement>.insteadOf配置技巧結合使用時。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/519781.html
