Gitee

Posted by huangqing on April 8, 2021

国内的 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文件的内容粘贴进去:

SSH

点击“确定”即可完成并看到刚才添加的 Key:

SSH

关联远程仓库

本地的 git 仓库,如何把它关联到 Gitee 的远程库?

在 Gitee 上创建一个新的项目,项目名称与本地库保持一致.在项目右上方获取新建项目的 SSH 地址。

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

参考