【问题标题】:How to properly use git and branches如何正确使用 git 和分支
【发布时间】:2012-04-18 01:06:40
【问题描述】:

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

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

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

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

  • 主分支:发布 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. 将 Develop 合并到 Master(1.0.1 版)

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

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

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

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

==

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

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

谢谢!!

【问题讨论】:

标签: git version-control branch


【解决方案1】:

我在正确使用 git 吗?

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

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

是的,这很正常。

是否可以删除分支但保留历史信息 完好无损?

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

【讨论】:

  • 啊好吧..我正在寻找一种方法(你告诉我这是不可能的)来查看分支的开始和结束......很遗憾:(
  • @Marcx 我有点晚了,但也许你还在寻找这个标志“git merge --no-ff branchname”
【解决方案2】:

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

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

【讨论】:

  • 我读到...我实际上正在使用该系统...没有解释我关于删除分支的问题...这基本上是我的主要疑问:)
  • 谢谢。作为分支范式的完整 n00b,您的链接正是我所需要的。
猜你喜欢
  • 2012-09-18
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
相关资源
最近更新 更多