日常工作中我们总是将git的账号配置在全局设置里,以保证工作项目的代码仓库能够正常的pull
和push
。
git config --global user.email "xxx@xxx"
git config --global user.name "xxx"
但是工作之余,也会想捯饬一下自己的仓库。这时候就会发现,按照github的说明去弄,总是报错
这时候查询百度,也只会告诉你要设置单个仓库的配置,不使用--global
选项
cd 项目目录
git config user.email "xxx@xxx"
git config user.name "xxx"
然后发现并没有卵用,就算在项目setting
中单独添加ssh的key,依然不起作用
其实真实的原因是 git依然在使用默认的全局配置账号在请求自己的项目仓库,由于没有访问权限,导致无法访问。那么我们要做的就是:当我们做公司项目时,使用公司的账号向公司仓库推送代码。做自己项目时,使用自己账号向自己的仓库推送代码。
那么下面就讲解具体的操作流程
1.首先使用命令生成一套新的ssh公私钥。(如果在前面的试错中你已经生成过了,可以直接省略)
ssh-keygen -t ed25519 -C "example@xx.com"
这个时候,你就会发现在 ~/.ssh/
目录下,有了2套公私钥 id_rsa
和id_ed25519
2.接下来就是关键步骤,让git自动识别仓库和账号的关系。在
~/.ssh
目录下创建一个config
文件并写入对应配置
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa
Host github_private
HostName github.com
IdentityFile ~/.ssh/id_ed25519
这里假设公司项目是github.com
,自己的项目是github_private
那么我们在配置自己项目仓库的远程地址时,将github.com
替换为github_private
即可
将原来的
git remote add origin git@github.com:xxx/test.git
改为
git remote add origin git@github_private:xxx/test.git
这个时候,我们再进行
push
等操作时,就发现能成功推拉代码了~