一、前言
日常开发常用代码托管平台:海外GitHub、国内Gitee(码云)、GitCode。 三个平台 Git 底层逻辑一致,但 SSH 地址、部分交互细节略有区别。
本文实现一套通用流程: SSH 密钥生成 → 平台公钥配置 → 本地项目.gitignore编写 → Git 初始化 → 规范提交代码 → 推送远程仓库。
演示环境:Windows 11 专业版、Git 2.51.1
二、前置准备
- 安装 Git,推荐默认选项完成安装;
- 注册对应平台账号(GitHub / Gitee / GitCode);
- 在网页端新建远程仓库:
✅最佳实践:创建仓库不要勾选初始化 README、LICENSE,从根源规避推送冲突; ⚠️如果仓库已经自动生成 README,后文提供冲突解决方案。
三、步骤 1:生成 SSH 密钥 Ed25519 / RSA 选型(三大平台全部支持)
SSH 用于免密推送代码,避免每次输入账号密码。目前主流两种加密算法:
方案 1【优先推荐】Ed25519(椭圆曲线算法)
密钥更小、签名速度更快、安全性更高,GitHub/Gitee/GitCode 全部原生支持。
ssh-keygen -t ed25519 -C "你的邮箱"方案 2【老旧设备兼容备选】RSA 4096
兼容极低版本 OpenSSH 设备,通用性最强
ssh-keygen -t rsa -b 4096 -C "你的邮箱"RSA vs Ed25519 对比
| 特性 | RSA 4096 | Ed25519 |
|---|---|---|
| 算法类型 | 大整数分解 | 椭圆曲线密码 |
| 密钥长度 | 4096bit | 256bit |
| 生成速度 | 较慢 | 更快 |
| 平台支持 | 全平台兼容 | 新版 OpenSSH,主流代码平台支持 |
执行操作
运行命令后连续三次回车,不设置密钥密码。 生成目录:C:\Users\用户名\.ssh\
id_ed25519/id_rsa:私钥,绝对不能泄露id_ed25519.pub/id_rsa.pub:公钥,记事本打开,完整复制所有内容
💡小技巧:同一套公钥,可以同时添加到 GitHub、Gitee、GitCode 三个平台,不用重复生成多组密钥!
四、步骤 2:三大平台分别配置公钥入口
1)GitHub
头像 → Settings → SSH and GPG keys → New SSH key 粘贴公钥,保存
2)Gitee(码云)
头像 → 设置 → SSH 公钥 → 添加公钥
3)GitCode
头像 → 设置 → SSH 密钥 → 添加公钥
五、连通性测试命令(区分平台)
# GitHub 测试 ssh -T git@github.com # Gitee 测试 ssh -T git@shturl.cc # GitCode 测试 ssh -T git@gitcode.com首次连接提示:Are you sure you want to continue connecting ?输入yes回车,出现欢迎提示即代表 SSH 配置成功。
六、步骤 3:项目根目录配置 .gitignore
本次需求:保留 video 空文件夹,不上传内部视频;忽略临时文件、Python 缓存。 项目根目录新建.gitignore
Windows 直接新建文件报错时,文件名输入
.gitignore.(末尾带小数点),系统自动修正。
# 保留video文件夹,忽略文件夹内部所有文件 video/* # Python缓存 __pycache__/ *.pyc *.pyo # 日志、临时文件 *.log *.tmp验证忽略规则(推荐)
模拟推送,预览将要上传的文件,检验过滤规则是否生效
git add . --dry-run七、步骤 4:本地仓库初始化 & 关联远程仓库
进入项目根目录执行:
git init三大平台 SSH 地址格式对照
# GitHub git remote add origin git@github.com:用户名/仓库名.git # Gitee git remote add origin git@shturl.cc:用户名/仓库名.git # GitCode git remote add origin git@gitcode.com:用户名/仓库名.git⚠️注意:不要混合使用 SSH 地址和 HTTPS 地址,配置 SSH 后全程使用 SSH 链接。
八、步骤 5:文件暂存 + Angular 约定式提交规范(重点)
git add .🔥 Angular 约定式提交标准规范
标准格式:
<type>(<scope>): <subject> <body> <footer>- type(变更类型,必填)
feat:新增功能、新项目初次上传fix:修复代码 Bugdocs:文档修改refactor:代码重构,无功能变更perf:性能优化style:代码格式调整(空格、缩进)test:新增 / 修改测试代码chore:构建脚本、依赖、环境配置更新
- scope(可选):标明改动模块,例如
(Vision_Dev) - subject:简短描述,小写开头,结尾不加句号
日常单行简写(绝大多数场景使用)
git commit -m "feat: 上传Python机器视觉开发项目"复杂多行完整版(大型项目)
git commit -m "feat(Vision_Dev): 上传机器视觉demo 新增人脸检测demo1、demo2 内置haar人脸分类器、测试图片 配置.gitignore过滤视频资源 "规范优势:版本历史清晰,可自动生成项目更新日志,团队协作可读性大幅提升。
九、步骤 6:推送远程仓库,高频报错解决方案
报错 1:src refspec main does not match any
原因:旧版 git init 默认分支为master;GitHub/Gitee/GitCode 远程仓库默认分支为main,名称不匹配。
解决方案:本地分支重命名
git branch -M main报错 2:remote contains work that you do not have locally / [rejected] main -> main (fetch first)
原因:远程仓库创建时自动生成 README,本地仓库全新初始化,两者没有共同提交历史。 两种方案:
方案 A【单人私有仓库可用】强制推送覆盖远程
⚠️高危!多人协作绝对禁止使用,会覆盖他人代码
git push -u origin main --force方案 B【通用标准方案,多人协作首选】拉取远程代码合并
git pull origin main --allow-unrelated-histories git push -u origin main--allow-unrelated-histories专门解决本地、远程仓库无共同提交历史的冲突。
推送成功标识
控制台输出包含xxx -> main,代表推送完成,刷新网页仓库查看代码。
十、后续迭代通用命令模板
首次绑定远程之后,后续更新代码直接执行:
git add . git commit -m "feat(Vision_Dev): 新增Demo" git push十一、通用踩坑总结
- 一套 SSH 公钥可同时绑定 GitHub、Gitee、GitCode,无需重复生成;
- 优先 Ed25519 密钥,老旧环境再选用 RSA4096;
.gitignore必须执行git add之前配置,已加入暂存区文件不会自动过滤;video/完全忽略文件夹;video/*保留空文件夹,仅过滤内部文件;- 区分警告 warning 和错误 error,换行符警告不会阻断推送;
- 严格使用约定式提交规范,方便长期维护项目;
--force强制推送谨慎使用,仅个人独立仓库场景考虑。