我是可怕的问题的标题很抱歉,但我会尝试更冗长解释自己有点:

我使用Git(但我想具体的软件不会在这种情况下,真正的问题),我的软件项目。因为很多项目,我打算在具有不同的版本。当有一个版本,我可能会分配一个提交标记 - 例如“1.0”。随着时间的流逝,和代码被黑客攻击,并最终有一个版本,另一个标签 - 这一次“2.0”

一天,我注意到一个严重的错误,即在这两个版本1.0和2.0中的存在,并且它需要被固定。刁难(也许更现实的为好),我不能只解决它在当前的主/主干,并假设每个人都将被使用,因为在2.0向后一些不兼容1.0和人是懒惰和唐“T要升级。

那么,这将是一个很好的方案有,为了支持这种行为:能够使在旧版本的变化。 Git的似乎在一定程度上等号,因为git describe命令(“[latest tag]-[commits since the tag]-[current commit hash]”)的输出用的版本标签。我可能无法避免使用标签完全,然后

我能感觉到的标签和分支的结合将是一个不错的主意,但由于某些原因,我无法用这一次换我周围的细节头。

有帮助吗?

解决方案

您一定要考虑使用一个分支这一点。对于这种类型的开发非常好Git支持分支。

举例来说,你的线性版本历史记录可能是这样的:

---A---B---C[1.0]---D---E---F[2.0]---G---H

如果你发现在1.0中的错误,并希望解决它,你不能简单地插入一个新的提交在提交C和D之间所以,你可以创建这样的一个分支:

---A---B---C[1.0]---D---E---F[2.0]---G---H[2.1]
            \
             C1---C2[1.1]

提交C1和C2修正该分支,在这里可以标记该释放1.1的问题。现在假设你在做2.1版本的变化(G),你想反向移植到1.1版本,以同样的变化在那里。您可以使用git cherry-pick做到以下几点:

---A---B---C[1.0]---D---E---F[2.0]---G---H[2.1]
            \
             C1---C2[1.1]---G1[1.2]

提交G1涉及提交ģ除了它可以的,而不是2.0版1.1版之上适用。

在这些例子中,分支(发展的额外流)是关键的概念,而标签只是为了让一个名字来指代国家项目是在特定时间点的便捷方式。 GIT中支持操纵分支,尤其是与强大git rebase命令的许多其他方式。

其他提示

您需要一个分支 - 你会做保养修复和解除针对始于释放标签的分支,而持续发展下去主(主)分支

您似乎有大部分的答案已经在你提到的分支和标签。标签是有标记一定甚至(如发行)和分支是并行发展。某一特定版本维护的一个分支通常做,你可以cherrypick与目前大多数VCS的变更导入从头部/躯干给定的bug修复成一个分支,反之亦然。

您可以冒充头/躯干/主(不管你“当前”的开发分支被命名),并在您的各种维护分支合并错误修正。只要你有一个或大或小发行完成后,你创建一个分支进行维护。

有很多方法可以实现你想要的东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top