一、学习背景与目标
在国产化开发协作场景中,码云(Gitee)作为基于 Git 的本土代码托管平台,是开发者实现代码版本管理、跨团队协作的核心工具。本次学习聚焦'工作端代码推送到码云端'全流程,核心目标不仅是掌握基础推送操作,更要实现:① 标准化配置 Git 环境,适配 KylinOS 等国产系统;② 精准处理分支管理与代码冲突;③ 优化推送流程,提升开发效率,最终形成可复用的代码管理规范。
在国产化开发场景下使用码云(Gitee)进行代码推送的全流程。内容涵盖 Git 环境配置(适配 KylinOS)、SSH 密钥生成与验证、本地新项目及已有仓库的推送操作、分支管理与冲突解决策略,以及通过 Shell 脚本实现自动化推送的优化方案。旨在帮助开发者建立标准化的版本管理规范,提升协作效率并规避常见技术坑点。
在国产化开发协作场景中,码云(Gitee)作为基于 Git 的本土代码托管平台,是开发者实现代码版本管理、跨团队协作的核心工具。本次学习聚焦'工作端代码推送到码云端'全流程,核心目标不仅是掌握基础推送操作,更要实现:① 标准化配置 Git 环境,适配 KylinOS 等国产系统;② 精准处理分支管理与代码冲突;③ 优化推送流程,提升开发效率,最终形成可复用的代码管理规范。
# 检查是否已安装 Git
git --version
# 未安装则执行安装(KylinOS 通过 yum 源)
yum install git -y
# 验证安装结果,显示版本号如 git version 2.31.1 即成功
git --version
[图 1:KylinOS 终端安装 Git 成功截图(标注版本号、安装完成提示)]
# 配置用户名(与 Gitee 账号一致)
git config --global user.name "Gitee 用户名"
# 配置绑定邮箱(Gitee 账号验证邮箱)
git config --global user.email "[email protected]"
# 可选:配置默认编辑器(解决提交备注时 vim 闪退问题)
git config --global core.editor "vim"
# 查看完整配置,确认信息无误
git config --list
关键说明:--global参数表示全局生效,若需为单个项目配置不同信息,进入项目目录后去掉该参数执行即可。
# 生成 RSA 密钥(-t 指定加密类型,-C 备注邮箱)
ssh-keygen -t rsa -C "[email protected]"
# 执行后连续按 3 次回车:默认路径(~/.ssh/)、无密码、确认无密码
# 查看公钥内容(核心,需复制完整字符串)
cat ~/.ssh/id_rsa.pub
Gitee 端配置步骤:
[图 2:Gitee 添加 SSH 公钥界面截图(标注标题输入框、公钥粘贴区、确认按钮)]
验证 SSH 连接:
ssh -T [email protected]
# 成功提示:Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access.
失败排查:若提示'Permission denied',检查:① 公钥复制是否完整;② Gitee 账号是否绑定该邮箱;③ 本地.ssh目录权限(需为 700,执行chmod 700 ~/.ssh)。
# 1. 进入本地代码目录(示例路径)
cd /home/dev/project/my-web-project
# 2. 初始化本地 Git 仓库(生成.git 隐藏目录)
git init
# 3. 创建.gitignore 文件(过滤无需推送的文件/目录)
cat > .gitignore << EOF
# 前端项目示例
node_modules/
# 依赖包目录
dist/
# 打包后目录
*.log
# 日志文件
.idea/
# IDE 配置文件
# 后端项目可追加
target/
# Maven 打包目录
*.jar
# 编译后的 jar 包
EOF
[图 3:.gitignore 文件配置截图(标注关键过滤项)]
# 4. 添加文件到暂存区(.表示所有文件,也可指定单个文件如 git add src/main.js)
git add .
# 5. 提交到本地仓库(备注必须清晰,格式:类型 (模块):描述,如 feat(login):新增验证码功能)
git commit -m "init(project):初始化 web 项目,包含登录/首页模块"
# 6. 在 Gitee 创建空白仓库(步骤:首页→新建仓库→填写名称/描述→勾选'私有'→不勾选'初始化 README'→创建)
# 7. 关联远程仓库(替换为自己的仓库 SSH 地址)
git remote add origin [email protected]:用户名/仓库名.git
# 8. 首次推送(-u 绑定本地 main 分支与远程 main 分支,后续可简化命令)
git push -u origin main
[图 4:首次推送成功终端截图(标注'Counting objects''Writing objects''To [email protected]'等成功提示)]
# 进入已有仓库目录
cd /home/dev/old-project
# 查看现有远程仓库(避免重复关联)
git remote -v
# 若已有 origin,先删除:git remote remove origin
# 关联新的 Gitee 仓库
git remote add origin [email protected]:用户名/仓库名.git
# 推送(若本地分支非 main,替换为实际分支名如 master)
git push -u origin main
# 1. 查看所有分支(*表示当前分支)
git branch -a
# 2. 创建功能分支(命名规范:类型/功能名,如 feature/login、bugfix/order)
git checkout -b feature/login main
# 3. 在功能分支开发并提交代码
git add .
git commit -m "feat(login):添加短信登录功能"
# 4. 推送功能分支到远程
git push origin feature/login
# 5. 功能开发完成,切换回主分支
git checkout main
# 6. 拉取远程主分支最新代码(避免冲突)
git pull origin main
# 7. 合并功能分支到主分支
git merge feature/login
# 8. 推送合并后的主分支
git push origin main
# 9. 可选:删除本地/远程功能分支
git branch -d feature/login # 本地删除
git push origin --delete feature/login # 远程删除
[图 5:分支管理流程示意图(标注'创建→开发→推送→合并→删除'全流程)]
冲突场景:多人修改同一文件的同一行代码,推送时提示'error: failed to push some refs to...'。
# 1. 先拉取远程最新代码
git pull origin main
# 2. 终端提示冲突文件(如 src/login.vue),打开文件查看冲突标记:
# <<<<<<< HEAD
# 本地修改的代码
# =======
# 远程修改的代码
# >>>>>>> 提交 ID
# 3. 手动编辑文件,保留正确代码,删除冲突标记
# 4. 重新提交并推送
git add src/login.vue
git commit -m "fix(conflict):解决登录页短信验证码冲突"
git push origin main
关键技巧:冲突解决后,建议先本地测试代码运行,再推送至远程,避免引入新问题。
git log # 查看所有提交记录(含 ID、作者、时间、备注)
git log --pretty=oneline # 简化显示提交记录
git show 提交 ID # 查看指定提交的详细修改内容
# 临时切换分支时,暂存当前未提交的代码
git stash
# 切换回分支后,恢复暂存的代码
git stash pop
# 查看当前远程地址
git remote -v
# 修改远程地址(如 SSH 改 HTTPS,或仓库迁移)
git remote set-url origin [email protected]:新用户名/新仓库名.git
| 坑点现象 | 原因分析 | 解决方案 |
|---|---|---|
| 推送时提示'non-fast-forward' | 本地分支落后于远程分支 | 先执行 git pull origin main 拉取最新代码,解决冲突后再推送 |
.gitignore 配置后仍推送过滤文件 | 过滤文件已被加入暂存区 | 执行 git rm --cached 文件名 移除暂存区,再重新提交 |
| HTTPS 方式推送每次需输密码 | 未配置凭证缓存 | 执行 git config --global credential.helper store,首次输入密码后永久保存 |
| 推送大文件提示'超出限制' | Gitee 单文件默认限制 100MB | 使用 Git LFS(大文件存储):git lfs install, git lfs track "*.zip", git add .gitattributes 大文件.zip, git commit -m "add: 项目安装包", git push origin main |
为提升效率,编写 Shell 脚本实现'一键添加 - 提交 - 推送',适配 KylinOS 系统:
# 创建脚本文件:push_code.sh
cat > push_code.sh << 'EOF'
#!/bin/bash
# 一键推送代码到 Gitee 脚本
read -p "请输入提交备注:" msg
# 添加所有文件到暂存区
git add .
# 提交代码
git commit -m "$msg"
# 拉取远程最新代码(避免冲突)
git pull origin main
# 推送代码
git push origin main
echo "代码推送完成!"
EOF
# 赋予执行权限
chmod +x push_code.sh
# 执行脚本
./push_code.sh
[图 6:脚本执行截图(标注输入备注、拉取/推送成功提示)]
使用说明:将脚本放在项目根目录,每次推送只需执行 ./push_code.sh,输入备注即可自动完成流程,减少重复命令输入。
通过本次精细化学习,不仅掌握了 Gitee 代码推送的全流程,更理解了 Git'分布式版本控制'的核心设计思想——每个本地仓库都是完整的版本库,无需依赖中央服务器即可完成提交,推送仅为'同步本地与远程'的补充操作。
在实操层面,适配 KylinOS 等国产系统的过程中,总结出'先配置、再验证、后操作'的规范:SSH 密钥配置、.gitignore 过滤、分支命名规范等前置步骤,看似繁琐却能大幅降低后续推送的问题率。而代码冲突解决的过程,也意识到团队协作中'及时沟通、分模块开发'的重要性——合理拆分功能分支,可从源头减少冲突。
从效率优化角度,Shell 脚本的应用体会到'自动化替代重复操作'的价值,这也是编程思维的核心:将固定流程抽象为可复用的代码,释放人力成本。后续计划进一步学习 Git 进阶功能(如标签管理、变基操作、多人协作代码评审),并将脚本扩展为支持多分支、自动检测冲突的版本,适配更复杂的企业级开发场景。
此外,作为国产化工具的使用者,深刻感受到 Gitee 在适配国产操作系统、满足本土开发需求上的优势,这也更加重视'国产化工具 + 标准化流程'的结合,为后续参与国产化项目开发打下坚实基础。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online