目前我使用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沒有權限驗證嗎
你可能沒搞懂push 和 commit的差別
push
是将本地库推送到远端,需要权限,sshkey
是用来校验是否有push权限的commit
只是在本地将改动提交到本地的仓库,不需要权限。.gitconfig
里面的用户名和邮箱只是commit
對應作者的訊息,不具備權限控制功能,可以隨便指定,就算你改成賈伯斯也能提交上去git config user.name
可以查看目前repo的使用者名稱配置git log
可以檢查歷史的commit是用什麼郵箱和用戶名提交的~/.gitconfig
是你git的全域配置,如果專案下沒有單獨的配置,就會從該設定檔繼承解決方法:在公司專案裡單獨配置即可
其實這樣還是比較容易混亂,一旦有新的公司項目,忘了配置公司郵箱,就還會出現類似的情況,最好把全局配置刪掉,這樣的話每次有新的項目,不配置用戶名和信箱是無法commit的
補充樓上貼上命令