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 减少冲突。

相关推荐
月落星还在16 分钟前
Spring MVC 与 Spring Boot:从“手动挡”到“自动驾驶”的进化论,兼谈前后端分离的哲学
spring boot·spring·云原生·mvc
蓝田~30 分钟前
大模型本地部署与远程调用 — 从 API 到 Agent
java·人工智能·claude·claude code
码农进化录36 分钟前
Java 程序员的 AI 进化论 | Spring Boot 接入 OpenAI 的六个坑,全帮你踩了
java·spring boot·openai
疯狂成瘾者1 小时前
Java 常见集合方法
java·windows·python
从此以后自律1 小时前
ConcurrentHashMap 超详细详解
java
兰令水1 小时前
hot100【acm版】【2026.7.14打卡-java版本】
java·数据结构·算法·leetcode·面试
thefool1122662 小时前
Java 数组是引用类型
java
霸道流氓气质2 小时前
SpringBoot中设计模式组合使用示例-策略、模板、观察者、门面、工厂、单例。
spring boot·后端·设计模式
cfm_29143 小时前
Spring监听器
java·spring boot·后端
cfm_29143 小时前
SpringBoot 数据库全栈整合
数据库·spring boot·后端