如何正确使用git和分支

时间:2012-04-04 10:18:45

标签: git version-control branch

我对GIT的版本控制有点新意。我阅读了此Guide,并遵循图HERE中显示的基本方法。不过,我对如何使用git分支将新功能的开发与现有代码分开存在疑问。

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

  • 主分支(包含发布版本)
  • 开发分支(包含新修补程序或功能以将其与现有项目功能分开)

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

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

对于版本1.0.1,我想要包含SunStar模块,但不包括SuperNova。因此,我将它们与Develop合并,然后将Develop与Release版本合并:

  1. 将NewModule_Sun合并到Develop
  2. 将NewModule_Star合并为Develop
  3. Merge Develop into Master(版本1.0.1)
  4. 需要永久保留Develop分支,但不再需要SunStar分支。它们被删除了:

    1. 删除NewModule_Sun分支
    2. 删除NewModule_Star分支
    3. 完成这些更改后,我的存储库包含以下三个分支:

      • Master Branch:Release 1.0.1
      • 开发分支:1.0.1版后的修改
      • NewModule_SuperNova分支:1.0.0版本之后的修改(在未与Star / Sun分支合并时从Develop创建)

      ==

      首先,我正确使用git分支吗?

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

      谢谢!

2 个答案:

答案 0 :(得分:18)

  

我是否正在使用git?

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

  

删除分支后,查看我认为的历史记录   丢失了关于分支本身的所有信息......这是正常的吗?

是的,这是正常的。

  

是否可以删除分支但保留历史信息   不间断?

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

答案 1 :(得分:10)

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

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