国内的 Git 托管服务——Gitee(gitee.com)
生成 SSH
Gitee 提供了基于 SSH 协议的 Git 服务,在使用 SSH 协议访问仓库仓库之前,需要先配置好账户/仓库的 SSH 公钥。
使用 Git Bash
命令行工具,生成 SSH 公钥。
查看已有的公钥
cat ~/.ssh/id_rsa.pub
你可以按如下命令来生成 sshkey
:
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
# Generating public/private rsa key pair...
注意:这里的
xxxxx@xxxxx.com
只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。
按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_rsa.pub
文件内容,获取到你的 public key
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
复制生成后的 ssh key,通过仓库主页 「设置」->「安全设置」->「SSH 公钥」
添加后,在终端(Terminal)中输入:
ssh -T git@gitee.com
首次使用需要确认并添加主机到本机 SSH 可信列表。若返回 Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access.
内容,则证明添加成功。
上传 SSH 公钥
使用 Gitee 和使用 GitHub 类似,我们在 Gitee 上注册账号并登录后,需要先上传自己的 SSH 公钥。选择右上角用户头像 -> 菜单“修改资料”,然后选择“SSH 公钥”,填写一个便于识别的标题,然后把用户主目录下的.ssh/id_rsa.pub
文件的内容粘贴进去:
点击“确定”即可完成并看到刚才添加的 Key:
关联远程仓库
本地的 git 仓库,如何把它关联到 Gitee 的远程库?
在 Gitee 上创建一个新的项目,项目名称与本地库保持一致.在项目右上方获取新建项目的 SSH 地址。
我们在本地库上使用命令git remote add
把它和Gitee
的远程库关联:
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
之后,就可以正常地用 git push
和 git pull
推送了.
如果在使用命令git remote add
时报错,需要删除后重新添加。
查看远程库信息
git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
删除已有的 GitHub 远程库
git remote rm origin
关联 Gitee 的远程库
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
关联多个远程仓库
一个本地库能不能既关联 GitHub,又关联 Gitee 呢?
使用多个远程库时,我们要注意,git 给远程库起的默认名称是origin
,如果有多个远程库,我们需要用不同的名称来标识不同的远程库。
先删除已关联的名为origin
的远程库:
git remote rm origin
然后,先关联 GitHub 的远程库:
git remote add github git@github.com:michaelliao/learngit.git
注意,远程库的名称叫github
,不叫origin
了。
接着,再关联Gitee
的远程库:
git remote add gitee git@gitee.com:liaoxuefeng/learngit.git
同样注意,远程库的名称叫gitee
,不叫origin
。
用git remote -v
查看远程库信息,可以看到两个远程库:
git remote -v
gitee git@gitee.com:liaoxuefeng/learngit.git (fetch)
gitee git@gitee.com:liaoxuefeng/learngit.git (push)
github git@github.com:michaelliao/learngit.git (fetch)
github git@github.com:michaelliao/learngit.git (push)
推送到 GitHub,使用命令:
git push github master
推送到 Gitee,使用命令:
git push gitee master
遇到的问题
The authenticity of host can’t be established
新生成密钥的时候,git clone 或者 push 的时候,可能会报这样的错误:
The authenticity of host 'gitee.com (xxx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxx.
文件夹内少了一个 known_hosts 文件,本来密钥文件应该是三个,现在只有两个,便报了这样的错误,此时输入 yes
回车之后,生成了缺少了的 known_hosts 文件,便可解决这个问题
Git: There is no tracking information for the current branch.
在执行git pull
的时候,提示当前branch
没有跟踪信息:
git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
本地的库不是从 Gitee 上面 clone 下来的,会出现这样的情况:
执行下面的推送命令:
git pull origin master --allow-unrelated-histories