如何“撤销”之前已还原的提交?

6
想象一下以下情况:
已合并到集成分支的代码需要撤销。但是,你不能通过重置来实现,因为此后发生了其他提交。此外,你可能希望在以后重新应用该提交。
使用 git revert 很容易应用反向提交。但是,当我们想要提交该更改(例如从特性分支),会发生什么?你只需重新合并分支吗?由于技术上代码已经合并,这样行得通吗?
当你最终准备好接受该合并时,该怎么办?
2个回答

7

只需还原撤销的提交即可。

git revert HASH_OF_REVERT_COMMIT

0
如果我正确理解了您的情况,您想要还原已合并到集成分支的分支。

在这种情况下,例如,

git <your_branch> merged to master, pushed to origin/master.

你想撤销你推送到源代码库的提交。

撤销合并提交/单个提交。

这将撤销单个提交,也可用于撤销合并提交。

示例:

git revert -m 1 <commit-ID>
Finished one revert.
[master xxxxxxx] Revert "Merge branch 'xx/your_branch'"
 10 files changed, 0 insertions(+), 12 deletions(-)

git revert会引入新的提交。您需要提交更改并将其推送到origin/master或相应的origin/branch。

撤销还原

如果您决定重新合并内容,它的回归已经修复了怎么办?

示例:

git revert <commit-ID>
Finished one revert.
[master xxxxxxx] Revert "Merge branch 'xx/your_branch'"
 10 files changed, 12 insertions(+), 0 deletions(-)

在完成这个操作后,你已经解决了之前分支中引入的回归问题,并已经将其撤销。接下来,你可以将该分支合并到主干上。


更详细的解释。我们有一个开发分支,其中包含来自功能分支的所有合并更改。我们想要进行发布,但是其中一些提交被确定存在问题,或者仅仅不想发布。显然,我们可以挑选我们想要的提交,但我不喜欢这样做,因为它不会显示在历史图表中,所以另一个选择是将develop与release合并,并撤销我们不想要的提交。现在,稍后我们确实想要发布这些提交。 - Erik Funkenbusch
也许,是的,它就像简单地撤消撤销提交一样简单。 - Erik Funkenbusch
如果你想从develop分支发布,那么如果你想要撤销15个提交怎么办?这有点繁琐。然而,撤销会在分支中添加一个额外的提交。也许,你可以尝试将特定的提交合并到你的发布分支,但这需要同样的工作量。直接撤销撤销提交是最简单的方法,如果它不是更多的提交。 - danglingpointer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接