github - git兩個.ssh key如何解決衝突
阿神
阿神 2017-05-02 09:29:48
0
2
593

目前我使用github還有公司的gitlab,而github上對應的是我的QQ號,gitlab對應的是公司的帳號。而且我不想在Github上加入公司的帳號來取得的金鑰。
解決問題: 參考網路文章,本地寫了config檔

  # gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa(对应公司的账号)

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa2(我的QQ号)

情況說明:
1.出現的問題,目前公司提交的name居然是我的QQ信息,但是gitlab上添加的SSH key是公司對應帳號生成的。 (估計邏輯有點混亂)

2.我查看本地的設定cat ~/.gitconfig 是我QQ號對應的資訊!

問題: 為什麼gitlab上配置了公司帳號的.ssh key,提交代碼的時候還會顯示QQ帳號的資訊?難道gitlab沒有權限驗證嗎

阿神
阿神

闭关修行中......

全部回覆(2)
为情所困

你可能沒搞懂push 和 commit的差別

push 是将本地库推送到远端,需要权限,sshkey是用来校验是否有push权限的
commit 只是在本地将改动提交到本地的仓库,不需要权限。.gitconfig里面的用户名和邮箱只是commit對應作者的訊息,不具備權限控制功能,可以隨便指定,就算你改成賈伯斯也能提交上去

  • git config user.name 可以查看目前repo的使用者名稱配置

  • git log 可以檢查歷史的commit是用什麼郵箱和用戶名提交的

~/.gitconfig是你git的全域配置,如果專案下沒有單獨的配置,就會從該設定檔繼承

解決方法:在公司專案裡單獨配置即可

cd repo_of_work
git config user.name 公司用户名
git config user.email 公司邮箱

其實這樣還是比較容易混亂,一旦有新的公司項目,忘了配置公司郵箱,就還會出現類似的情況,最好把全局配置刪掉,這樣的話每次有新的項目,不配置用戶名和信箱是無法commit的

PHPzhong

補充樓上貼上命令

$ git config -l
$ git config --global -l 
$ git config --global --unset user.name
$ git config --global --unset user.email
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板