为实习生小白提供最安全、永不翻车的Git标准工作流程,确保不污染主分支、不提交错误。
本文为实习生小白提供傻瓜式、一步一抄的Git安全工作流程,适合初次接触公司项目的新人,读完后能掌握安全开发习惯,避免污染主分支和提交错误。
⚡ 快速参考
- 适用场景:实习生在公司项目中进行新功能开发或Bug修复
- 核心结论:克隆公司仓库,备份到个人仓库,开发完成后从初始节点创建分支提交,确保公司主分支安全
- 最短步骤:克隆公司仓库 -> 备份到个人仓库 -> 开发并提交到个人仓库 -> 从初始节点创建分支 -> 合并代码并推送给公司
- 常用命令/代码 :
git clone,git remote rename origin upstream,git remote add origin <个人仓库>,git push origin master,git branch <分支名> <节点ID>,git merge master,git push upstream <分支名> - 避坑提醒:永远不要直接在公司主分支上开发或推送,总是从初始克隆节点创建新分支,千万不要动主节点
📚 学习目标
- 掌握Git远程仓库管理和分支策略
- 能独立完成安全的分支开发和提交流程
- 理解公司项目版本控制的安全边界和最佳实践
一、基础概念
1.1 概念定义
- 上游仓库 (upstream):公司远程仓库,用于拉取最新代码和最终提交
- 个人仓库 (origin):自己的远程仓库,用于备份和版本控制个人代码
- 分支 (branch):独立的开发线,避免直接修改主分支
- 节点 (commit):代码提交的快照,用于创建安全的分支起点
1.2 核心术语对比
| 术语 | 含义 | 使用场景 | 常见误区 |
|---|---|---|---|
| upstream | 公司远程仓库 | 拉取更新和推送分支 | 误以为是个人仓库,直接推送主分支 |
| origin | 个人远程仓库 | 备份个人代码和版本控制 | 忘记添加,导致无法备份 |
| master/main | 主分支 | 公司稳定代码线 | 直接在此分支开发 |
| 功能分支 | 临时开发分支 | 实现新功能后合并 | 创建分支后忘记切换 |
二、原理详解
2.1 底层机制/执行流程
- 克隆公司仓库:获取公司代码的完整副本到本地
- 重命名远程仓库:将公司仓库命名为upstream,避免混淆
- 添加个人仓库:设置个人仓库为origin,用于安全备份
- 备份到个人仓库:推送初始代码到个人仓库,确保数据安全
- 本地开发:在本地修改代码,随时提交到个人仓库
- 创建安全分支:从初始克隆节点创建新分支,避免污染主分支
- 合并代码:将个人开发内容合并到新分支
- 推送给公司:将分支推送到公司仓库,等待审核合并
2.3 与其他方案对比
-
方案 A:直接在master分支开发并推送
优点:简单快捷
缺点:容易污染主分支,提交错误代码
适用条件:个人项目,无团队协作
-
方案 B:使用本文的安全分支流程
优点:安全可靠,不影响主分支,易于代码审查
缺点:步骤稍多,需要理解分支概念
适用条件:公司项目,团队开发
-
选型建议:推荐方案B,尤其适合实习生,确保职业发展不受影响(建议听劝,不然真的容易挨收拾)
三、完整实战代码
3.1 环境准备
- 系统:Windows/macOS/Linux
- 版本:Git 2.0+
- 依赖安装:
bash
# 安装Git(如果未安装)
# Windows: 下载并安装 https://git-scm.com/download/win
# macOS: brew install git
# Linux: sudo apt-get install git
3.2 步骤化实战
Step 1:克隆公司仓库到本地
bash
git clone 公司仓库地址
说明:这一步完成后,本地会创建项目文件夹,包含公司代码。
Step 2:进入项目文件夹
bash
cd 项目名
说明:切换到项目目录,所有后续命令在此执行。
Step 3:把公司仓库命名为 upstream
bash
git remote rename origin upstream
说明:重命名远程仓库为upstream,便于区分。
Step 4:添加你自己的 Gitee 仓库
bash
git remote add origin https://gitee.com/你的账号/项目名.git
说明:添加个人仓库作为origin,用于备份。
Step 5:把公司代码推到你自己仓库(第一次备份)
bash
git push origin master
说明:推送初始代码到个人仓库,确保备份。
Step 6:直接在本地写代码
bash
# 编辑代码文件
说明:进行日常开发,无需Git命令。
Step 7:随时提交到你自己的仓库保存版本
bash
git add .
git commit -m "写你做了什么"
git push origin master
说明:提交更改到个人仓库,安全保存进度。
Step 8:开始提交公司项目仓库
查看当前关联的远程仓库
bash
git remote -v
作用:看看现在有没有关联公司仓库,没有就继续下一步。
bash
git remote add upstream #公司仓库地址
情况A:如果已经创建过新分支则直接采用下面代码拉取仓库最新分支信息
bash
git fetch upstream
情况B:找不到之前的节点,先找到你最开始克隆的那个节点
bash
git log --oneline
说明:查看提交历史,找到最底下的初始节点ID,如ece5e15。
Step 9:在初始节点上创建新分支
bash
git branch 功能分支名 节点ID
说明:创建基于初始节点的分支,确保安全,如果创建好分支了就直接跳过走下一步。
Step 10:切换到这个新分支
bash
git switch 功能分支名
说明:切换到新分支,准备合并代码。
Step 11:把你写好的代码合并进来
bash
git merge 你的老分支名
说明:合并个人开发内容到分支。
如果遇到冲突,一般分支会让保留自己的(问清楚别直接改)
bash
git checkout --theirs 冲突文件路径1 冲突文件路径2 ...
# 标记解决冲突 + 提交
git add .
git commit -m "解决冲突,合并合格证功能代码"
Step 12:推送到公司仓库
bash
git push upstream 功能分支名
说明:推送分支到公司仓库,完成提交。
3.3 完整可运行示例
bash
# 第一次设置
git clone https://github.com/company/project.git
cd project
git remote rename origin upstream
git remote add origin https://gitee.com/youraccount/project.git
git push origin master
# 日常开发
# ... 写代码 ...
git add .
git commit -m "实现新功能"
git push origin master
# 提交给公司
git log --oneline # 找到初始节点,如 ece5e15
git branch feature-branch ece5e15
git switch feature-branch
git merge master
git push upstream feature-branch
四、场景应用
场景 1:新功能开发
- 需求:实习生接到开发新登录功能的任务
- 方案:按照本文流程,先在个人仓库开发和备份,完成后创建分支提交给公司
- 收益:避免新功能代码污染公司主分支,提高代码质量和团队协作效率
场景 2:Bug修复
- 需求:修复公司项目中的一个紧急Bug
- 方案:克隆仓库,备份到个人,修复Bug后创建修复分支提交
- 收益:确保Bug修复不影响主分支稳定运行,易于回滚和审查
五、避坑总结(高频错误)
5.1 典型问题清单
-
推送到了公司master分支
原因:忘记重命名remote或直接使用origin推送
解决:立即联系导师回滚,或学习本文流程重新设置
-
分支创建在错误节点
原因:没有查看log找到初始节点
解决:使用
git log --oneline确认初始commit ID -
合并时冲突
原因:代码与主分支有差异
解决:手动解决冲突,或重新从初始节点创建分支
5.2 最佳实践
- 总是从初始克隆节点创建新分支
- 开发过程中频繁提交到个人仓库
- 提交前检查分支是否正确
- 养成查看git status和log的习惯
本文为MY_TRUCK原创实战学习笔记,持续更新Java后端与AI应用领域干货,问题欢迎评论区交流。