37

我对使用 GIT 进行版本控制有点陌生。我阅读了本指南并遵循此处图表中显示的基本方法。尽管如此,我还是对如何使用 git 分支将新功能的开发与现有代码分开存在一些疑问。

这是一个例子。假设一开始,我的存储库包含以下两个主要分支:

  • Master 分支(包含发布版本)
  • 开发分支(包含新的修复或功能以将它们与现有项目功能分开)

当我需要开发新功能或模块时,我会从 Develop 创建分支并在那里启动新的代码项目。例如,我创建了三个新分支来添加与 、 和 相关SunStar功能SuperNova。现在,我的存储库包含五个分支:

  • 主分支:发布 1.0.0
  • 开发分支:1.0.0 发布后的修改
  • NewModule_Sun 分支:将 Sun 添加到项目(从 Develop 分支创建)
  • NewModule_Star 分支:将 Star 添加到项目(从 Develop 分支创建)
  • NewModule_SuperNova 分支:将 SuperNova 添加到项目(从开发分支创建)

对于 1.0.1 版,我想包含SunandStar模块,但不包含SuperNova. 因此,我将它们与 Develop 合并,然后将 Develop 与 Release 合并:

  1. 合并 NewModule_Sun 到 Develop
  2. 将 NewModule_Star 合并到 Develop
  3. 将 Develop 合并为 Master(1.0.1 版)

Develop 分支需要永久保留,但不再需要Sunand分支。Star他们被删除:

  1. 删除 NewModule_Sun 分支
  2. 删除 NewModule_Star 分支

在这些更改之后,我的存储库包含以下三个分支:

  • 主分支:发布 1.0.1
  • 开发分支:1.0.1 发布后的修改
  • NewModule_SuperNova 分支:1.0.0 版后的修改(在没有与 Star/Sun 分支合并时从 Develop 创建)

==

首先,我是否正确使用了 git 分支?

其次,我回顾了最终开发分支的历史,似乎丢失了一些关于NewModules. 这正常吗?而且,是否可以将所有历史信息传输到开发分支?

谢谢!!

4

2 回答 2

23

我在正确使用 git 吗?

是的,您描述的工作流程几乎是标准工作流程。你创建一些分支,你在它上面工作,当你完成后,你合并它并删除不需要的分支(除非你要继续在那个分支上开发)。

删除分支后,查看历史记录,在我看来,我丢失了有关分支本身的所有信息……这正常吗?

是的,这很正常。

是否可以删除分支但不破坏历史信息?

不知道你在这里的意思。只要您在删除之前合并了分支,历史仍然存在。您刚刚将其合并到另一个分支中,并且可以在该分支上看到历史记录。如果这是您要求的,则无法知道何时删除了分支。

于 2012-04-04T14:49:18.487 回答
12

我建议您阅读http://nvie.com/posts/a-successful-git-branching-model/它定义了 git 分支的良好模式。

我发现我将开发分支保留了一段时间,直到时间使您在这些修订中所做的更改历史不值得保留(大约 6 个月),然后将其删除。

于 2012-04-04T10:22:09.310 回答