Git 推送本地代码到 Gitee 完整操作指南(Windows + MINGW64)
一、问题背景
本文旨在介绍将本地新建的 Git 仓库推送到 Gitee 远程仓库的完整流程。过程中涉及 SSH 公钥认证配置、分支冲突处理及命令规范等关键点,以下是详细操作步骤和知识点解析。
二、核心操作步骤
步骤 1:初始化本地 Git 仓库
# 进入本地项目目录
cd /d/Gits2
# 初始化空 Git 仓库
git init
# 输出:Initialized empty Git repository in D:/Gits2/.git/
步骤 2:配置本地 Git 用户信息
# 配置用户名(--local 表示仅当前仓库生效)
git config --local user.name "your_username"
# 配置邮箱(注意参数为 -C 大写)
git config --local user.email "[email protected]"
# 查看配置是否生效
cat .git/config
步骤 3:关联远程 Gitee 仓库
# 关联远程仓库(SSH 地址,替换为自己的 Gitee 仓库地址)
git remote add origin [email protected]:your_username/test1.git
# 验证远程仓库关联结果
git remote -v
# 输出:origin [email protected]:your_username/test1.git (fetch)
# origin [email protected]:your_username/test1.git (push)
步骤 4:解决 SSH 公钥认证失败问题
问题现象
执行 git push 时提示:[email protected]: Permission denied (publickey),原因是本地未生成 SSH 密钥或公钥未配置到 Gitee。
4.1 生成正确的 SSH 密钥
错误命令示例:
- 多空格:
ssh -keygen(应为ssh-keygen) - 小写参数:
-c(应为-C)
正确命令:
# 生成 ed25519 算法密钥(推荐,安全性高)
ssh-keygen -t ed25519 -C "[email protected]"
# 若系统不支持 ed25519,改用 RSA 算法(兼容性更好)
ssh-keygen -t rsa -b 4096 -C "[email protected]"
交互步骤(全程回车即可):
- 指定密钥保存路径:直接回车使用默认路径
- 设置密钥密码:建议留空方便使用,输入回车
- 确认密码:再次回车
4.2 复制公钥到剪贴板
# 复制 ed25519 公钥(若为 RSA 则替换为 id_rsa.pub)
cat ~/.ssh/id_ed25519.pub | clip
4.3 配置 Gitee SSH 公钥
- 登录 Gitee → 右上角头像 → 「设置」;
- 左侧菜单 → 「SSH 公钥」;
- 「标题」:自定义(如 Windows-MINGW64);
- 「公钥」:粘贴剪贴板中的公钥内容(以
ssh-ed25519/ssh-rsa开头); - 点击「确定」并输入密码验证。
4.4 测试 SSH 连接
# 正确命令
ssh -T [email protected]
# 成功输出应包含 Hi your_username(@your_username)!
步骤 5:提交本地代码到暂存区 + 本地仓库
# 将所有文件添加到暂存区
git add .
# 提交到本地仓库
git commit -m "1.commit"
步骤 6:推送本地代码到 Gitee(解决分支冲突)
问题现象
直接推送提示:! [rejected] master -> master (fetch first),原因是远程仓库有本地未同步的内容。
方案 1:拉取并合并远程内容(推荐)
# 拉取远程 master 分支并合并(解决无共同历史问题)
git pull origin master --allow-unrelated-histories
# 合并后重新推送
git push -u origin master
讲解:
--allow-unrelated-histories:必须加!因为本地和远程是独立创建的,无共同提交历史。- 若弹出 vi 编辑器:按
Esc→ 输入:wq保存。
方案 2:强制推送(覆盖远程内容,谨慎使用)
# 强制推送本地 master 到远程 master
git push -u origin master -f
讲解:
-f:强制推送,会覆盖远程仓库所有未同步内容,多人协作禁止使用。
步骤 7:验证推送结果
# 查看远程仓库信息
git remote show origin
# 查看本地文件列表
ll
讲解:
tracked:表示本地分支已跟踪远程分支。up to date:表示本地与远程内容已同步。
三、常见错误与解决方案汇总
| 错误提示 | 原因 | 解决方案 |
|---|---|---|
bash: shh: command not found | ssh拼写为shh | 修正为ssh -T [email protected] |
Bad escape character 'ygen' | ssh-keygen写成ssh -keygen | 去掉空格,执行ssh-keygen -t ed25519 -C "邮箱" |
Too many arguments | 注释参数用小写-c | 修正为ssh-keygen -t ed25519 -C "邮箱" |
Permission denied (publickey) | SSH 公钥未配置 | 重新生成密钥→复制公钥→Gitee 配置公钥→测试 SSH 连接 |
master -> master (fetch first) | 远程仓库有本地未同步内容 | 方案 1:git pull origin master --allow-unrelated-histories;方案 2:git push -u origin master -f(谨慎) |
四、补充:HTTPS 与 SSH 的区别
HTTPS 和 SSH 是 Git 连接远程仓库的两种核心方式,核心区别集中在认证方式、安全性和便捷性上。
| 对比维度 | HTTPS | SSH |
|---|---|---|
| 认证方式 | 账号密码或访问令牌 | 公钥 + 私钥,密钥对认证 |
| 安全性 | 传输加密,但密码易泄露 | 传输加密 + 密钥存储,私钥本地,更安全 |
| 配置难度 | 极低,只需克隆地址 | 中等,需生成密钥并上传公钥 |
| 使用便捷性 | 每次推送可能需输入凭证 | 配置完成后终身免密 |
| 适用场景 | 临时使用、公共仓库 | 长期开发、个人/团队仓库 |
五、后续操作建议
- 避免强制推送:多人协作时优先使用
git pull合并,再git push; - 换行符配置:若频繁提示 LF/CRLF,可执行
git config --global core.autocrlf true(Windows); - 密钥备份:本地
.ssh文件夹中的私钥建议备份; - 全局配置:若所有仓库使用相同用户名/邮箱,可使用
--global参数配置。

