如何使用Git为一个标签制作补丁?

如何使用Git为一个标签制作补丁?,git,release,Git,Release,我们使用git来管理代码,在发布新版本时只需创建一个标记。所以如果我们 在我们发布后发现bug,并且做了一些新的修改,如何处理这个问题 顺便说一句:我们不使用multil分支,因为我们希望简化流程使用一个可以提交修复的每个版本的分支。这是管理发布的最简单方法 。。。如果您不想使用Git的分支特性,为什么不使用GUI,比如Subversion?如果风险投资的简单性是一个问题,那么Git是一个错误的选择。如果令人敬畏的分支功能是一个值得关注的问题,那么Git是一个完美的选择。使用一个可以提交修复程序

我们使用git来管理代码,在发布新版本时只需创建一个标记。所以如果我们

在我们发布后发现bug,并且做了一些新的修改,如何处理这个问题


顺便说一句:我们不使用multil分支,因为我们希望简化流程

使用一个可以提交修复的每个版本的分支。这是管理发布的最简单方法


。。。如果您不想使用Git的分支特性,为什么不使用GUI,比如Subversion?如果风险投资的简单性是一个问题,那么Git是一个错误的选择。如果令人敬畏的分支功能是一个值得关注的问题,那么Git是一个完美的选择。

使用一个可以提交修复程序的每个版本的分支。这是管理发布的最简单方法


。。。如果您不想使用Git的分支特性,为什么不使用GUI,比如Subversion?如果风险投资的简单性是一个问题,那么Git是一个错误的选择。如果说令人敬畏的分支特性值得关注,那么Git是一个完美的选择。

这种情况是分支存在的部分原因,因此我怀疑,从长远来看,你只是通过避免分支而让事情变得更难。不过,我想你可以这样做:

  • 签出发布标签

  • 进行错误修复、提交、重新标记并发布修复

  • 从新标签上重新设置主标签的基础

这将在发布后立即在时间线中插入修复(通过避免将提交图线性化的分支)

使现代化 正如@cdhowie在评论中指出的,“如果不止一个开发人员克隆了repo,这种方法将无法无缝工作,因为它将改变历史并需要强制推送”。请参阅
git-rebase
手册页倾斜的“从上游rebase恢复”部分,其中说明:

重定(或任何其他形式的重写)其他人拥有的分支 以工作为基础是一个坏主意:任何下游的人都被迫这样做 手动修复它们的历史记录。本节介绍如何进行修复 从下游的角度来看。然而,真正的解决办法是 首先,避免重新调整上游的位置


换句话说,你可以采用重定基期的策略,让你的历史保持线性,但这样你可能实际上为自己创造了更多的工作。每个发行版都有一个单独的分支是有充分理由的标准做法。

这种情况是分支存在的部分原因,因此我怀疑从长远来看,你只是通过避免分支而让事情变得更难。不过,我想你可以这样做:

  • 签出发布标签

  • 进行错误修复、提交、重新标记并发布修复

  • 从新标签上重新设置主标签的基础

这将在发布后立即在时间线中插入修复(通过避免将提交图线性化的分支)

使现代化 正如@cdhowie在评论中指出的,“如果不止一个开发人员克隆了repo,这种方法将无法无缝工作,因为它将改变历史并需要强制推送”。请参阅
git-rebase
手册页倾斜的“从上游rebase恢复”部分,其中说明:

重定(或任何其他形式的重写)其他人拥有的分支 以工作为基础是一个坏主意:任何下游的人都被迫这样做 手动修复它们的历史记录。本节介绍如何进行修复 从下游的角度来看。然而,真正的解决办法是 首先,避免重新调整上游的位置


换句话说,你可以采用重定基期的策略,让你的历史保持线性,但这样你可能实际上为自己创造了更多的工作。标准做法是为每个发行版设置一个单独的分支,这是有充分理由的。

此操作之后,历史记录将不再是线性的;历史将隐式分支。@cdhowie你指的是在rebase之前的临时分支,标记和主控之间的一组(现在是孤立的)提交,还是其他什么?哈哈,事实上我一定是真的很困或者什么的;我错过了再基础步骤。是的,在此之后,历史将是线性的。但是您应该在回答中指出,如果有多个开发人员克隆了repo,那么这种方法将无法无缝工作,因为它将改变历史并需要强制推送。@cdhowie您完全正确。我会在答案中加上这一点。在这个操作之后,历史将不再是线性的;历史将隐式分支。@cdhowie你指的是在rebase之前的临时分支,标记和主控之间的一组(现在是孤立的)提交,还是其他什么?哈哈,事实上我一定是真的很困或者什么的;我错过了再基础步骤。是的,在此之后,历史将是线性的。但是您应该在回答中指出,如果有多个开发人员克隆了repo,那么这种方法将无法无缝工作,因为它将改变历史并需要强制推送。@cdhowie您完全正确。我会在答案中加上这个。