git工作流程简化版

1.更新

git checkout main

git pull origin main

2.切换分支操作并提交

git checkout -b feature/sql-and-gitignore

git add sql/sky_take_out.sql .gitignore

git commit -m "feat: add database schema and update gitignore"

git push origin feature/sql-and-gitignore

注意:

  • 区别于其他类型的分支:团队通常会约定多种前缀,例如:

    • feature/ → 新功能开发

    • bugfix/ → 修复某个 Bug

    • hotfix/ → 紧急修复生产环境问题

    • release/ → 准备发布版本

    • docs/ → 仅文档修改

3.创建PR+描述

在 GitHub/GitLab 上创建 Pull Request

源分支:feature/sql-and-gitignore

目标分支:main

填写 PR 说明,描述你做了什么

4.测试+审查

5.合并

三种合并方式的区别

合并方式 操作说明 结果 优点 缺点
合并分支(Merge commit) 执行标准 git merge,保留源分支的每一个 commit,并额外生成一个合并提交(Merge commit) master 历史中会看到两条分支线 + 一个合并节点 完整保留原始提交记录和分支结构,适合多人协作、追溯历史 历史可能显得杂乱(多条线)
扁平化分支(Squash merge) 把源分支的所有 commit 压缩成 一个 commit,然后追加到 master 上,不生成合并提交 master 只增加一个 commit,内容包含所有改动 历史非常干净、线性 丢失中间提交的细节(如你两次提交分别做了什么)
变基并合并(Rebase merge) 相当于先在源分支上 git rebase master,然后 git checkout mastergit merge(Fast-forward) master 历史线性,源分支的每个 commit 按顺序重演一遍 线性历史,保留每个 commit 信息 会改写 commit 哈希,如果多人协作可能引起冲突

你应该怎么选?(模拟企业开发流程)

推荐选择第一种:合并分支(Merge commit)

理由:

  • 这是最标准、最安全的合并方式,大多数企业默认使用

  • 保留了你的两次提交的完整记录(可见你分别做了"添加 SQL 结构"和"补交 gitignore"),便于以后追溯。

  • 生成的合并提交会包含 PR 编号,方便关联。

  • 不会破坏任何历史,也没有 squash 的信息丢失问题。

扁平化 适用于"开发中很多小修小补,但最终只想记一个完整的功能提交"。你的两个提交已经很有意义,不需要 squash。

变基 适合追求线性历史的团队,但你的场景不必刻意追求。

6.接收PR

一、合并后删除提交分支

含义

当 PR 被成功合并到目标分支(如 master)后,自动删除源分支 (即你发起 PR 时使用的分支,比如 feature/sql-and-gitignore)。

作用

  • 保持远程仓库的分支列表整洁,避免堆积大量已经合并过的旧分支。

  • 减少混乱,让团队成员清楚哪些分支还在活跃开发中。

注意

  • 只删除远程仓库 的分支(创建 PR 后的:发起的PR;本地还有一个 feature/sql-and-gitignore ),你本地的同名分支不会自动删除(需要手动 git branch -d feature/xxx)。

  • 如果还有其他人基于这个源分支进行开发,删除可能会带来问题。但通常 feature 分支只属于一个人,合并后即可删除。

建议勾选(模拟企业开发中,合并后清理分支是良好实践)。


二、合并后关闭提到的 Issue

含义

如果 PR 的描述(或评论)中包含了特定格式的 Issue 引用(如 #123fix #456close #789),合并时会自动将那些 Issue 的状态变为"已关闭"。

作用

  • 自动化关联:开发完成后自动关闭对应的 Issue,减少手动操作。

  • 保持追踪清晰:例如 Issue 描述"实现用户登录功能",对应的 PR 合并后自动关闭该 Issue,表示需求已完成。

触发格式示例(以 Gitee 为例,也兼容 GitHub 常用格式):

  • #123 → 关闭编号为 123 的 Issue

  • fix #456close #456resolve #456closes #456 等也会触发

注意

  • 只有被合并的 PR 才会触发自动关闭。如果 PR 被关闭而未合并,不会关闭 Issue。

  • 如果 PR 描述中没有提到任何 Issue,勾选这个选项没有任何效果

  • 企业中常与项目管理工具(如 Jira、Trello)集成,但 Gitee 内置的 Issue 功能也支持。

建议 :如果你没有在 PR 描述中写类似 #1 这样的引用,不勾选;如果有明确关联的 Issue,则可以勾选。


总结对比

选项 作用对象 何时有效 是否推荐勾选(本次模拟)
合并后删除提交分支 源分支(远程) 总是有效 ✅ 推荐(保持整洁)
合并后关闭提到的 Issue 关联的 Issue 仅当 PR 描述中有关键字如 #数字 ❌ 不勾选(本次没有关联 Issue)

结束

问题

我们搞完一个功能提交一次 PR?

是的,一个逻辑完整的小功能一个 PR,不是每个微小改动都 PR。

提交后需要重新 git checkout main && git pull origin main 吗?

如果要开始下一个新功能,需要 (否则基于旧的 main 开发会有冲突风险)。

如果当天不再开发新功能,可以不拉,第二天开工时再拉。

我们搞完一个功能提交一次 PR?

还是说一天完成一个模块,搞好再提交?

两种方式都可行。

  • 粒度细(多个 PR/天):更符合持续集成、快速反馈,但分支切换频繁。

  • 粒度粗(一个 PR/天):切换次数少,但要注意及时拉取 main 减少冲突。

相关推荐
触底反弹1 小时前
苹果换芯片,用户说「真香」;微软换芯片,用户说「退货」—— 同样的事,为什么结果完全相反?
java·架构·编程语言
澜舟孟子开源社区1 小时前
架构创新、上下文工程、可信计算、自适应优化:澜舟科技智能体核心技术解析
java·科技·架构
淘矿人1 小时前
DeepSeek V4对决Claude 4.8:AI模型终极横评
java·开发语言·人工智能·python·sql·php·pygame
IT利刃出鞘2 小时前
Java多线程--三种写法(Thread、Runnable、Callable)
java·多线程
东风微鸣2 小时前
Argo CD 用户管理:本地用户配置与权限分离实践
git·后端
两年半的个人练习生^_^2 小时前
JMM 进阶:彻底理解 volatile 实现原理
java·开发语言
Yeats_Liao2 小时前
Java网络编程(五):Selector选择器与高并发实现
java·后端·架构
AC赳赳老秦2 小时前
OpenClaw任务复盘自动化:统计每日完成工作、遗留问题,优化工作节奏
java·大数据·linux·运维·服务器·数据库·openclaw
兰令水2 小时前
leecodecode【层序遍历】【2026.6.3打卡-java版本】
java·开发语言