问题的发现:

偶然想要用smartgit clone个gitee上的仓库是,发现clone不下来。

如何解决:

  • 查看一下git的全局配置,会发现有全局的user和email,这就是问题的根本,因为gitee上没有这个user
​git config --global --list
  •  清除全局配置
git config --global --unset user.name "xxx"
git config --global --unset user.email "xxxxxxxxxxxxx"
  •  生成gitee和gitlab的秘钥
ssh-keygen -t rsa -f  C:/Users/你的名字/.ssh/id_rsa_gitlab -C 你的邮箱
ssh-keygen -t rsa -f  C:/Users/你的名字/.ssh/id_rsa_gitee -C 你的邮箱

这个时候你就会发现有四个文件生成了。

 

  •  添加识别 SSH keys 新的私钥

默认只读取 id_rsa,为了让 SSH 识别新的私钥,需要将新的私钥加入到 SSH agent 中。

使用管理员身份运行power shell,执行

Set-Service -Name ssh-agent -StartupType automatic

 ssh-agent 服务的启动类型设置不正确。这里是把 ssh-agent 的启动类型设置为自动方式。

ssh-agent bash
ssh-add C:/Users/你的名字/.ssh/id_rsa_gitlab
ssh-add C:/Users/你的名字/.ssh/id_rsa_gitee
  •  到gitlab和gitee里增加秘钥

把id_rsa_gitee.pub和id_rsa_gitlab.pub里的内容粘贴到gitlab和gitee里。

  •  配置config文件

在C:\Users\你的名字\.ssh文件夹下,创建config文件,然后用记事本打开,根据自己实际情况增加内容

# gitlab
    Host  你用的gitlab的ip    
    HostName  gitlab域名
    PreferredAuthentications publickey
    IdentityFile  C:/Users/你的名字/.ssh/id_rsa_gitlab
    User 你gitlab的用户名

# gitee
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile C:/Users/你的名字/.ssh/id_rsa_gitee
    User 你gitee的用户名
  •  测试
######### @前面的git不用变!!!########
ssh -T git@gitee.com
ssh -T git@github.com

 看到这样的内容就说明配置成功啦~

  • 最后

这时候你会发现不论是clone 还是commit,还是有问题呀!因为你的那些仓库都没有制定user和email呀!你忘了你刚把全局的删了吗?!

所以你需要在你的所有仓库的根目录下的.git文件夹下的config文件里增加这部分内容

[user]
	name = 对应gitee/gitlab的用户名
	email = 对应gitee/gitlab的邮箱
  •  对于新仓库怎么搞呢?
git init
git remote add origin git@gitee.com:xxxx/xxxx.git
git add .
git commit -m "Initial commit"  # 报错了,Please tell me who you are.
git push -u origin master

因为没有指定该参数对应是gitee还是gitlab,像上面那样增加上user信息

然后

git commit -m "Initial commit"
git push -f origin master 
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐