本地项目通过Git上传至Gitee
前言
使用Gitee已有几年时间,项目也传了不少。很惭愧,平时工作中版本管理更多使用SVN,因此在Gitee上还是用SVN管理。最近想逐渐把个人项目切换成Git管理。因此,在本地按照流程尝试了一遍,参照Gitee帮助说明和网上的教程,过程中遇到了一些坑,最终完成了测试操作,现在把过程记录下来,以供查阅。
一、Git 安装配置
1、安装 Git
以下操作都在 Windows 10上进行,在 Git for Windows 网站(Git for Windows 国内
下载站)上下载安装包,直接安装即可。
2、配置 Git
a) 设置用户信息
# 设置全局的用户名和邮箱
git config --global user.name "test"
git config --global user.email test@123.com
b) 查看配置信息
git config --list
二、在Gitee里添加自己的SSH公钥
1、生成公钥
a) 在终端窗口中输入命令
# -t 指定要创建的密钥类型,Ed25519 的安全性在 RSA 2048 与 RSA 4096 之间,且性能较高,Gitee官方推荐
# -C 公钥中添加注释,即为公钥起的别名
ssh-keygen -t ed25519 -C "xhp1@gitee"
b) 按照提示完成三次回车,即可生成 ssh key。第一次提示输入公钥文件名称(保持默认空值,直接回车),后两次提示输入passphrase(私钥解锁口令,保持默认空值,直接回车;如果设置了密码,每次通过ssh提交时都需要输入密码,不太方便,看个人喜好),如下图:
c) 本条描述有偏差,下条有修正, 注意,血泪教训:第一步“Enter file in which to save the key (C:\Users\xhp/.ssh/id_ed25519):”一定要保持默认空值,直接回车;别输入自定义名称,否则ssh -T命令正常,但是git clone失败,提示如下错误
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.
d) 20220222更新, 如果本地已经有 Key 存在且不想被覆盖或者就是一定想自定义 Key 文件名字怎么办呢?其实是可以的(好吧,我承认是之前没搞清楚改名字出现错误的具体原因),只是稍微麻烦点,要多配置一步(.ssh/config文件)。
第一步,生成 Key 文件:
# -f 指定保存密钥的文件名
ssh-keygen -t ed25519 -C "xhp1@gitee" -f "id_ed25519_gitee"
第二步:配置.ssh/config文件,如果config文件不存在,创建一个没扩展名的文本文件即可:
Host gitee.com
HostName gitee.com
IdentityFile C:\Users\xhp\.ssh\id_ed25519_gitee
User xinghuipeng
说明,ssh默认读取的私钥文件是默认名字如id_ed25519,这样在改名之后就有各种问题,因此,需要我们在config文件里配置指定密钥文件名。
2、本地添加私钥
a) 在终端中执行
# “id_ed25519”是生成的key文件名,需换成自己的
ssh-add id_ed25519
# 执行成功,输出下列语句
Identity added: id_ed25519 (xhp1@gitee)
b) 在Windows环境下执行,可能会遇到执行错误
Error connecting to agent: No such file or directory
c) 解决方法,以管理员身份运行PowerShell,并依次运行下列命令,然后重新执行ssh-add命令
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. 内容,则证明添加成功
ssh -T git@gitee.com
b) 如果出现错误,“git@gitee.com: Permission denied (publickey)”;原因可能是少了第二步(添加私钥),导致无法成功。
三、上传项目
1、方式一,远程仓库clone本地
先将仓库clone到本地,修改后再push到 Gitee 的仓库,一般用于已有项目;
a) 将仓库clone到本地
# 将远程仓库克隆到本地
git clone https://gitee.com/用户个性地址/HelloGitee.git
b) 修改后push到远程仓库
# 将当前目录所有文件添加到git暂存区
git add .
# 提交并备注提交信息
git commit -m "my first commit"
# 将本地提交推送到远程仓库
git push origin master
2、方式二,本地新建项目push到Gitee
本地初始化一个仓库,设置远程仓库地址后再做push,一般用于上传新项目;
a) 本地初始化Git仓库,在项目根目录下执行命令
git init
b) 关联远程仓库,git remote add
git remote add origin https://gitee.com/用户个性地址/HelloGitee.git
c) 查看项目的远程仓库信息
git remote -v
d) 先拉取合并远程仓库的文件
git pull origin master
e) 提交至远程仓库
git add .
git commit -m "提交**"
git push origin master
后记
- 其实通过 https 的方式(即用户名/密码),不需要这么麻烦的步骤,只需要第一步安装 Git,第二步使用 Git 上传即可;但是https 的方式需要每次验证用户名/密码,或者通过其他工具如IDEA、TortoiseGit 也可以更方便操作。
- 实际项目里应该都是通过工具执行 Git 操作,不需要直接写命令,各有利弊,有待进一步探索、适应,期待后面,自己有更多更好地总结。