本地项目通过 Git 上传至 Gitee

   使用 Gitee 已有几年时间,项目也传了不少。很惭愧,平时工作中版本管理更多使用 SVN,因此在 Gitee 上还是习惯用 SVN 管理。最近想逐渐把个人项目全部切换到 Git。因此,在本地按照流程尝试了一遍,参照 Gitee 帮助说明和网上的教程,过程中遇到了一些坑,最终完成了测试操作,现在把过程记录下来,以供查阅。


一、Git 安装配置

1、安装 Git

以下操作都在 Windows 10 上进行,在 Git for Windows 网站(Git for Windows 国内下载站)上下载安装包,直接安装即可。

2、配置 Git

a) 设置用户信息

1
2
3
# 设置全局的用户名和邮箱
git config --global user.name "test"
git config --global user.email test@123.com

b) 查看配置信息

1
git config --list

二、在 Gitee 里添加自己的 SSH 公钥

1、生成公钥

a) 在终端窗口中输入命令

1
2
3
# -t 指定要创建的密钥类型,Ed25519 的安全性在 RSA 2048 与 RSA 4096 之间,且性能较高,Gitee 官方推荐
# -C 公钥中添加注释,即为公钥起的别名
ssh-keygen -t ed25519 -C "xhp1@gitee"

b) 按照提示完成三次回车,即可生成 ssh key。第一次提示输入公钥文件名称(保持默认空值,直接回车),后两次提示输入 passphrase(私钥解锁口令,保持默认空值,直接回车;如果设置了密码,每次通过 ssh 提交时都需要输入密码,不太方便,看个人喜好),如下图:
如果上一步修改了 Key 文件名(比如本地已经有 Key 文件存在且不想被覆盖或者就是想自定义 Key 文件名),那就需要多配置一步(.ssh/config 文件),示例步骤如下:

  第一步,生成 Key 文件:

1
2
# -f 指定保存密钥的文件名
ssh-keygen -t ed25519 -C "xhp1@gitee" -f "id_ed25519_gitee"

  第二步:配置 .ssh/config 文件,如果 config 文件不存在,创建一个没扩展名的文本文件即可:

1
2
3
4
Host gitee.com
HostName gitee.com
IdentityFile C:\Users\xhp\.ssh\id_ed25519_gitee
User xinghuipeng

  说明,ssh 默认读取的私钥文件是默认名字如 id_ed25519,这样在改名之后就会匹配不到文件出现各种问题,因此,需要我们在 config 配置文件里指定密钥文件名。

​d) 注意,血泪教训。如果修改了 Key 文件名但没进行上一步设置 config 文件,可能会出现 ssh -T 命令正常,但是 git clone 失败,提示如下错误:

1
2
3
4
5
6
7
F:\>git clone git@gitee.com:xinghuipeng/gittest.git
Cloning into 'gittest'...
git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

2、本地添加私钥

a) 在终端中执行

1
2
3
4
5
# “id_ed25519”是生成的 key 文件名,需换成自己的
ssh-add id_ed25519

# 执行成功,输出下列语句
Identity added: id_ed25519 (xhp1@gitee)

b) 在 Windows 环境下执行,可能会遇到执行错误

1
Error connecting to agent: No such file or directory

c) 解决方法,以管理员身份运行 PowerShell,并依次运行下列命令,然后重新执行 ssh-add 命令

1
2
Set-Service ssh-agent -StartupType Manual
Start-Service ssh-agent

3、Gitee 添加公钥

在生成目录下找到生成的公钥(***.pub), 将内容填入 Gitee>> 设置 >> 安全设置 >>SSH 公钥;

4、确认并添加主机到本机 SSH 可信列表

a) 执行 ssh -T,并返回 Hi XXX! You’ve successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功

1
ssh -T git@gitee.com

b) 如果出现错误,“git@gitee.com: Permission denied (publickey)”;原因可能是少了第二步(添加私钥),导致无法成功。

三、上传项目

1、方式一,远程仓库 clone 本地

a) 先将仓库 clone 到本地,修改后再 push 到 Gitee 的仓库,一般用于已有项目;
b) 将仓库 clone 到本地

1
2
# 将远程仓库克隆到本地
git clone https://gitee.com/ 用户个性地址 /HelloGitee.git

c) 修改后 push 到远程仓库

1
2
3
4
5
6
# 将当前目录所有文件添加到 git 暂存区
git add .
# 提交并备注提交信息
git commit -m "my first commit"
# 将本地提交推送到远程仓库
git push origin master

2、方式二,本地新建项目 push 到 Gitee

a) 本地初始化一个仓库,设置远程仓库地址后再做 push,一般用于上传新项目;
b) 本地初始化 Git 仓库,在项目根目录下执行命令

1
git init

c) 关联远程仓库,git remote add

1
git remote add origin https://gitee.com/ 用户个性地址 /HelloGitee.git

d) 查看项目的远程仓库信息

1
git remote -v

e) 先拉取合并远程仓库的文件

1
git pull origin master

f) 提交至远程仓库

1
2
3
git add .
git commit -m " 提交 **"
git push origin master

后记

  • 其实通过 https 的方式(即用户名 / 密码),不需要这么麻烦的步骤,只需要第一步安装 Git,第二步使用 Git 上传即可;但是 https 的方式需要每次验证用户名 / 密码,或者通过其他工具如 IDEA、TortoiseGit 也可以更方便操作。
  • 实际项目里应该都是通过工具执行 Git 操作,不需要直接写命令,各有利弊,有待进一步探索、适应,期待后面,自己有更多更好地总结。