Git 中的 Develop Branch — 是什么、目的和工作原理

作者: IT Sectr 发布日期: 2026-05-09 阅读时间: 8 分钟

Develop Branch — 是 Git Flow 中的主要集成分支,在准备发布之前,所有完成的 feature 分支都合并到其中。与 main 不同,develop 包含最新但尚未发布的更改 — 这里进行团队所有开发人员的日常代码集成。根据 Atlassian,2024 的数据,develop 是 Git Flow 中的强制分支,为团队提供稳定的集成环境。

要点

  • Develop Branch — 开发分支,在准备发布之前收集所有已完成的功能。
  • feature 分支的来源 — 所有新功能都从 develop 的最新 commit 创建。
  • 集成测试 在创建 release 分支之前在 develop 上执行。
  • develop 的稳定性 必须高 — 代码在这里通过代码审查和自动检查。
  • 合并到 main 仅通过 release 分支进行,不能直接从 develop 合并。

Git 中的 Develop Branch 是什么

Develop Branch(开发分支)— 是 Git Flow 中的一个长期分支,作为所有开发人员代码集成的中心节点。开发完成并通过代码审查后,feature 分支合并到其中。

develop 中的代码始终处于准备创建发布的状态,尽管尚未发布到生产环境。这意味着 develop 中的所有功能都经过了审查、测试和集成检查,但仍在其发布周期中等待。

main 不同(每个代码版本都是一个发布),develop 包含持续的更改流。随着 feature 分支的合并,develop 中会出现 commit,这每天可能发生多次。

根据 Vincent Driessen,2010 的数据,develop 是成功分支模型的关键要素,因为它将正在进行的工作与准备发布的版本分开。

develop 和 main branch 的区别

理解 developmain 之间的区别对于在 Git Flow 中正确工作至关重要。这些分支执行不同的功能,并且对稳定性有不同的要求。

特征DevelopMain / Master
目的集成新功能稳定的发布代码
稳定性高(测试后)最高(生产环境)
提交频率每天(合并 feature)按发布(每 1-4 周)
分支来源从中创建 feature从中创建 hotfix
合并从 feature 通过 PR从 release 通过 merge

将 develop 和 main 分开可以让团队持续集成新代码,而不会危及生产版本的稳定性。开发人员可以在 PR 批准后立即在 develop 中看到他们的代码,甚至在正式发布之前。

develop 在 Git Flow 中的作用

Git Flow 模型中,develop 位于 feature 分支(更改来源)和 release 分支(发布准备)之间。理解这种层次结构是有效分支的基础。

  • Feature → Develop — 每个完成的功能通过带有代码审查的 Pull Request 合并到 develop。
  • Develop → Release — 当积累足够的更改用于发布时,从 develop 创建 release 分支。
  • Release → Main + Develop — 在最终准备之后,release 分支合并到 main(发布)并返回到 develop(错误修复)。
  • Hotfix → Main + Develop — 关键修复从 main 创建并合并到两个分支。

这样的结构保证了 develop 始终包含最新版本的所有新功能代码,而 main 只包含经过验证的生产代码。这对于在 App Store 和 Google Play 中审查周期长的移动项目尤其重要。

develop 与其他 Git Flow 分支的关系

Develop 是 feature、release 和 hotfix 分支之间的中心环节。理解合并方向是防止冲突和丢失 commit 的基础。

develop 中的代码质量要求

代码质量 在 develop 中必须高,但不是绝对的。与 main 不同(每个错误都意味着紧急 hotfix),develop 允许在发布前修复的小缺陷。

合并到 develop 之前代码的最低要求:

  • 编译 — 代码必须无错误地编译。develop 中的编译失败会阻塞整个团队的工作。
  • 单元测试 — 所有现有测试必须通过。新代码的测试覆盖率必须至少达到 70%。
  • Code style — 代码必须符合团队接受的格式和命名标准。
  • 没有弃用的 API — 新代码中不允许使用已弃用的方法。

CI/CD 流水线中的自动检查应在每次推送到 develop 时运行。如果编译失败,负责的开发人员必须在一小时内修复问题或回退其 commit。

develop 的 CI/CD 检查

为 develop 配置 GitHub Actions 可确保每个 PR 在合并前通过自动检查。典型的流水线包括编译、测试和 linting。

yaml
# GitHub Actions — 合并后检查 develop
name: Develop CI

on:
  pull_request:
    branches: [develop]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Unit tests
        run: ./gradlew testDebug
      - name: Lint
        run: ./gradlew lint
      - name: Build
        run: ./gradlew assembleDebug

合并到 develop 的规则

合并到 develop 必须遵守严格的规则以保持集成分支的稳定性。违反这些规则会导致冲突、编译失败和团队时间损失。

  • 仅通过 Pull Request — 禁止直接推送到 develop。所有更改都经过代码审查。
  • 至少一个批准 — PR 必须获得至少一个未参与任务的开发人员的批准。
  • Squash merge — 建议在合并到 develop 时将所有 feature 分支的 commit 合并为一个,以保持历史清晰。
  • PR 的时效性 — 在合并之前,PR 必须相对于 develop 的最新 commit 进行更新(rebase 或 merge)。

PR 的时效性 规则尤为重要。如果 feature 分支是一周前创建的,而 develop 已经前进了 50 个 commit,直接合并可能导致冲突,最好在 PR 的上下文中解决,而不是在 develop 中。

保护 develop 免受错误合并

Branch protection rules(分支保护规则)— 是 GitHub、GitLab 或 Bitbucket 级别的设置,用于防止 develop 中的错误更改。它们保证即使是意外的推送也不会破坏集成分支。

推荐的 develop 保护规则:

  • Require pull request — 禁止直接推送到 develop。所有更改仅通过 PR。
  • Require approvals — 在合并 PR 之前至少 1-2 个批准。
  • Require status checks — 如果 CI/CD 流水线未通过,则阻止合并。
  • Require up-to-date — PR 分支必须在合并前相对于 develop 进行更新。
  • Restrict push access — 限制只有高级开发人员才能推送到 develop。

配置 develop 保护需要 10 分钟,但可以防止因集成分支损坏而导致数周的停机。对于拥有多平台团队的移动项目来说,这一点尤为重要。

使用 develop 的命令示例

让我们看一个典型的开发人员工作日:早上他更新 develop,创建一个新的 feature 分支,完成任务后,将更改合并回 develop。

bash
# 早上同步 develop
git checkout develop
git pull origin develop

# 从 develop 创建新的 feature 分支
git checkout -b feature/add-push-notifications

# 开发功能中...
git add . && git commit -m "Add FCM integration"

# 开发期间更新 develop
git fetch origin develop
git rebase origin/develop

# PR 批准后 — 更新本地 develop
git checkout develop
git pull origin develop
git branch -d feature/add-push-notifications

develop 中的 git pull 命令同时执行两个操作:git fetch(从服务器获取新的 commit)和 git merge(将它们与本地分支合并)。对于 develop,这是标准的同步方式。

在合并损坏后恢复 develop

如果破坏了编译的代码进入 develop,需要迅速采取行动。develop 每停机一小时,整个开发团队的工作就会被阻塞。

如果破坏了编译的代码进入 develop,请使用 git revert 创建一个新的 commit 来撤销有问题的更改。不要在 develop 中使用 git reset — 这会重写其他参与者已有的历史记录。

bash
# 查找有问题的 commit
git log --oneline develop

# 通过 revert 撤销 commit(安全)
git revert a1b2c3d

# 将修复推送到远程 develop
git push origin develop

# 查看特定 commit 中的更改
git show a1b2c3d --stat

常见问题

小项目中需要 develop 分支吗?

对于有一到两个开发人员的项目,develop 通常是多余的 — main 和 feature 分支就足够了。一旦团队扩大到 3 人以上,develop 对于将未完成的功能与稳定的生产代码隔离就变得必要了。

可以直接提交到 develop 吗?

不可以,在任何专业项目中都禁止直接写入 develop。所有更改都通过带有代码审查和自动检查的 Pull Request。例外情况是 README 或 CI 配置的管理性修改,但最好也通过 PR 进行。

develop 与 trunk-based development 有何不同?

trunk-based development 中没有单独的 develop 分支 — 所有开发人员都在 main 中工作,使用非常短的 feature 分支(1-2 天)。这是 Git Flow 的替代方案,在具有高测试自动化水平的 DevOps 文化中很流行。

应该多久用发布更改更新一次 develop?

每次发布后,release 分支会合并回 develop,以将在发布准备过程中所做的所有修复纳入 develop。如果不这样做,develop 将与发布代码不同,导致下一次发布时出现冲突。

如果 develop 损坏了,没有人能创建 PR,该怎么办?

如果 develop 损坏,高级开发人员从最后一个稳定 commit 创建 hotfix 分支,修复问题,并通过具有特殊状态的 PR 直接将修复合并到 develop。恢复后,进行损坏原因分析。

总结

  • Develop Branch — Git Flow 中的中央集成分支,所有完成的 feature 分支在代码审查后合并到其中。
  • develop 和 main 的分离 可以将未完成的功能与稳定的生产代码隔离,降低发布错误的风险。
  • 代码质量 在 develop 中必须高:编译、测试通过和 code style 都自动检查。
  • 禁止直接推送到 develop — 仅通过 Pull Request,至少需要一位同事的批准。
  • 分支保护 通过 branch protection rules 防止集成环境的意外损坏。
  • Release 分支 从 develop 创建,发布后合并回来,同步 develop 与代码的实际状态。
  • 建议: 在每次推送到 develop 时配置 CI/CD 检查,并要求在合并前保持 PR 的时效性。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读