2012-04-04 73 views
26

我对GIT版本控制很陌生。我读了Guide,并遵循图HERE中显示的基本方法。不过,我对如何使用git分支从现有代码中分离新功能的开发方面存在一些疑问。如何正确使用git和分支

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

  • 主分支(含发行版)
  • 开发分公司(包含新的修补程序或功能,以他们现有的项目设有独立的)

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

  • 主分支:1.0.0版本
  • 开发分支:修改后的版本1.0.0
  • NewModule_Sun分支:孙添加到项目(从开发分支创建)
  • NewModule_Star分支:添加超新星计划(从开发分支创建)
:加星项目
  • NewModule_SuperNova分支(从开发分支创建)

    对于版本1.0.1,我想包含SunStar模块,但不包括SuperNova。所以,我把它们合并与开发,然后合并与发行开发:

    1. 合并NewModule_Sun到开发
    2. 合并NewModule_Star到开发
    3. 合并发展成为硕士(发布1.0.1)

    开发分支需要永久保存,但不再需要SunStar分支。他们被删除:

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

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

    • 主科:1.0版。 1
    • 开发分支:发布后的修改1.0.1
    • NewModule_SuperNova分支:版本1.0后的修改。0,我在正确使用Git分支

    ==

    首先(从当它不与星/孙分支合并开发创建的)?

    其次,我回顾了最后的开发分支的历史,似乎我已经失去了对NewModules一些信息。这是正常的吗?而且,是否有可能将所有历史信息传输到Develop分支?

    谢谢!

  • +1

    这可能会有帮助。 http://stackoverflow.com/questions/2613903/does-deleting-a-branch-in-git-remove-it-from-the-history – codef0rmer 2012-04-04 10:36:24

    回答

    16

    我在做一个属性格式使用git的?

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

    删除分支后,查看历史在我看来,我 已经失去了有关分支本身的每一个信息......这是正常的吗?

    是的,这是正常的。

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

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

    +0

    啊确定..我一直在寻找一种方式(你告诉我,是impossibile)看到的起点和分支的结束......真是可惜:( – Marcx 2012-04-05 07:33:24

    +0

    @Marcx我有点晚了,但也许你仍然在寻找这个标志“git merge --no-ff branchname” – 2016-05-30 03:52:16

    9

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

    我发现我一直在开发分支一段时间,直到时间使你在这些修订做出不值得留用(约6个月)的变动历史,然后将其删除。

    +0

    我读了......我其实是使用该系统...有没有解释我的问题关于删除一个分支......这基本上是我主要的疑问:) – Marcx 2012-04-04 10:25:07

    +0

    谢谢。作为分支范例的完整n00b,您的链接正是我所需要的。 – 2016-06-29 14:06:17