Git如何使用Branching实现模块化项目开发?

How to implement modular project development in Git using Branching?

我想将 Git 用于我的新 java 项目,我将在 Eclipse 中使用 Java 开发该项目。所以我打算使用eclipse的Egit插件。

现在,这个项目有多个成员在工作,每个成员分配了不同的模块。为每个单独的开发人员创建分支可以吗?一个主分支,用于在特定发布构建结束时将所有分支合并到其中。

在依赖关系和代码冲突的情况下,这个计划是否有效?就像一个模块的代码试图调用另一个尚未开发的模块的方法一样。并且 2 个不同的开发人员修改了同一个文件并在他们各自的分支中提交。

您应该阅读一些关于分支策略的文档,例如https://www.atlassian.com/agile/branching

今天大多数开发团队都在使用所谓的功能branching/Task分支。

我在一个历时 3 年的项目中使用 git 和 eclipse 与超过 200 人的团队合作。让我澄清一些事情:

  1. 如果您的开发人员之一依赖尚未交付的代码,eclipse 会将其作为错误引用并停止帮助您的开发人员。您的开发人员仍然可以使用 eclipse,但它只会像记事本这样的任何文本编辑器一样有用。
  2. git 的理念是让他们在本地工作区的私有分支上工作,这样他们就不会依赖中央服务器进行更新。所以本质上他们不使用像 CVS 或 ClearCase 中那样的公共分支。对私有存储库进行更新和提交,团队的其他成员不受此影响。从本质上讲,除非您愿意,否则您的分支永远不会处于不良状态。

这是我们使用的模型:

  1. 基线分支将由构建团队发布。
  2. 每个开发人员根据他们自己的代码完成状态从他们的私人存储库中发布了一个 branch/tag(在他们自己的系统上,随着我们项目多年来的发展,标签变得更轻)。此代码将重新基于构建团队发布的当前基线。
  3. 然后开发人员会要求构建团队将他们的代码合并到下一个基线的主分支中。
  4. 构建团队将按计划获取所有此类已发布的分支并将它们合并并发布新基线。
  5. 然后将使用以下策略之一处理任何合并冲突:
    • 如果合并冲突很简单,将邀请两个开发人员中的一个或两个来决定如何合并。
    • 如果它很复杂,则代码会从合并中删除,并通知开发人员在他的那一端对新基线进行合并,并为下一个基线重新发布代码。
  6. 任何依赖未由构建团队发布的代码的开发人员,将在他们同意的情况下直接从目标开发人员处提取并继续他们的工作。

备注: 要使用的有用 git 工具和命令:

  1. git 贵
  2. gitk
  3. git 标签
  4. git 变基

注意:构建团队必须熟练处理 git 才能正确使用 git 并发布干净的分支供您的团队使用。

一些建议: 1. Commit 经常解释提交代码的目的。 2. 使提交更小以帮助简化合并。 3. 不要更改已发布的分支,这将有助于减少很多痛苦(不会对已发布的分支进行 rebase,特别是如果有人已经获取了它们)

Git 是一个很好的工具,我相信一旦你用过,就很难再回到传统的工具,如 clearcase、cvs。