搜尋

首頁  >  問答  >  主體

github - git兩個.ssh key如何解決衝突

目前我使用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沒有權限驗證嗎

阿神阿神2796 天前623

全部回覆(2)我來回復

  • 为情所困

    为情所困2017-05-02 09:31:48

    你可能沒搞懂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的

    回覆
    0
  • PHPz

    PHPz2017-05-02 09:31:48

    補充樓上貼上命令

    $ git config -l
    $ git config --global -l 
    $ git config --global --unset user.name
    $ git config --global --unset user.email

    回覆
    0
  • 取消回覆