【发布时间】:2013-07-15 11:09:39
【问题描述】:
在学习 Git 时,对我来说最大的惊喜之一是修订不会永久与特定分支相关联。相反,一个分支仅仅指向一个特定的版本。一旦我完全内化了这个概念,我就意识到我不明白如何正确使用这个功能。
我读过一篇关于a successful Git branching model 的著名文章,其中将分支描述为线条,而修订则明显与一行相关联。考虑以下摘录:
这显示了两个功能分支(称为featureA 和featureB)和一个develop 分支。此外,featureB 被完全合并到develop 中,然后又短暂地分叉,只能重新合并。
这看起来不错、整洁且易于理解,并且恰好是回购在此过程结束时 字面意思在 Mercurial 之类的东西中的样子。我非常了解这一点,我喜欢它,并且我想像这样开发(在 Mercurial 中我做到了)。然而,在 Git 中,最终状态并非如此。它看起来像这样:
换句话说,我们拥有的关于这两个特性分支的唯一信息是它们现在与开发分支处于相同的修订版。因此,我们可以推断出整棵树的最佳结果是:
换句话说,所有关于发展历史的好消息都丢失了;它一开始就没有被记录下来。观察第一张图中,三个修订版在合并到 develop 之前显然在 featureB 上,但我不明白我们如何知道这三个修订版在合并之前在 featureB 上。
这是正确的吗?以上是我在 Git 中事后可以恢复的最好方法吗?因此,这篇文章的截图是否具有误导性?还是我遗漏了什么重要的东西?
【问题讨论】:
标签: git git-branch