Git 当多个分支合并到一个分支上时,如何从开发中仅回滚一个分支 我的工作流程: 有一个master分支 有一个dev分支 根据需要,根据master创建新的特征分支。然后将这些特性分支与dev合并,以便我们可以在开发服务器上测试它。功能分支从不使用除master以外的任何其他分支,因此它们是纯粹的,因为它们中的任何一个都可以随时单独与master合并 如果在将任何功能分支合并到dev时存在任何冲突,则在dev分支上通过切换到dev解决冲突,然后在dev分支上拉取该功能分支并手动解决冲突。因此,没有一个特性分支会从dev分支中获取拉力来保持它们的纯净 功能分支基于主功能,因为有时多个功能中的一个或多个可能未准备好进行当月部署,而所有其他功能都已完成并获得批准。在这种情况下,我们应该回滚dev分支上个月的状态,然后合并所有已批准的分支,去掉不完整的分支 问题:

Git 当多个分支合并到一个分支上时,如何从开发中仅回滚一个分支 我的工作流程: 有一个master分支 有一个dev分支 根据需要,根据master创建新的特征分支。然后将这些特性分支与dev合并,以便我们可以在开发服务器上测试它。功能分支从不使用除master以外的任何其他分支,因此它们是纯粹的,因为它们中的任何一个都可以随时单独与master合并 如果在将任何功能分支合并到dev时存在任何冲突,则在dev分支上通过切换到dev解决冲突,然后在dev分支上拉取该功能分支并手动解决冲突。因此,没有一个特性分支会从dev分支中获取拉力来保持它们的纯净 功能分支基于主功能,因为有时多个功能中的一个或多个可能未准备好进行当月部署,而所有其他功能都已完成并获得批准。在这种情况下,我们应该回滚dev分支上个月的状态,然后合并所有已批准的分支,去掉不完整的分支 问题:,git,github,Git,Github,对于本月的部署,10个特性中的一个还没有准备好,我们需要将其从开发中拉出来,这样所有其他特性都可以在开发服务器上测试一次,而不需要这个不完整的分支,然后可以与master合并 我能想到的第一个选择是如上所述,即将dev分支回滚到一个较旧的状态(比如commitabcdef),其中没有一个功能分支被合并到其中。然后我只需要在dev上合并所有已批准的分支。我可以使用git checkout abcdef回滚到旧状态。但我认为在那之后它会变成一种悬而未决的状态。我如何才能像通常在devbranch上那

对于本月的部署,10个特性中的一个还没有准备好,我们需要将其从开发中拉出来,这样所有其他特性都可以在开发服务器上测试一次,而不需要这个不完整的分支,然后可以与
master
合并

我能想到的第一个选择是如上所述,即将
dev
分支回滚到一个较旧的状态(比如commit
abcdef
),其中没有一个功能分支被合并到其中。然后我只需要在
dev
上合并所有已批准的分支。我可以使用
git checkout abcdef
回滚到旧状态。但我认为在那之后它会变成一种悬而未决的状态。我如何才能像通常在
dev
branch上那样合并其中的其他分支

我还读了一些关于git revert命令的文章。是否可以使用git revert解决我的问题


请注意,我需要退出的分支必须在本月部署后再次与
dev
合并。

只要指定父分支(即“干净”分支),就可以使用
git revert
完成此操作。大概是这样的:

git revert -m 1 <merge SHA>
git还原-m 1

这将要做的是创建一个新的提交,以恢复合并中的更改。如果以后要撤消此操作(例如,如果要重新合并问题分支),只需还原还原的提交即可。

只要指定父分支(即“干净”分支),就可以使用
git revert
执行此操作。大概是这样的:

git revert -m 1 <merge SHA>
git还原-m 1

这将要做的是创建一个新的提交,以恢复合并中的更改。如果以后要撤消此操作(例如,如果要重新合并问题分支),只需还原还原的提交。

谢谢,但我必须还原的提交不是最新的提交。在此分支之后,我从其他功能分支提交了几个必须还原的内容。
git revert
实际上会生成给定提交的反向差异(或者在合并提交中,合并的更改)。如果必须还原合并后所做的更改,则必须依次执行。谢谢,但我必须还原的提交不是最新的提交。在此分支之后,我从其他功能分支提交了几个必须还原的内容。
git revert
实际上会生成给定提交的反向差异(或者在合并提交中,合并的更改)。如果必须还原合并后所做的更改,则必须依次执行。
git revert
是回滚代码的唯一“干净”方法。如果不想使用它,则必须重写分支历史记录。如果您想更新功能分支(即rebase),重写历史记录是一个很好的做法,但如果您想回滚合并或提交列表,则重写历史记录不是一个好做法。好的,谢谢@sboye我正在尝试使用
git revert
来解决我的问题。
git revert
是回滚代码的唯一“干净”方法。如果不想使用它,则必须重写分支历史记录。如果你想更新一个功能分支(即重新基础),重写历史记录是一个很好的做法,但如果你想回滚一个合并或提交列表,则重写历史记录不是一个好做法。好的,谢谢@sboye,我正在尝试使用
git revert
来修复我的问题。