gpt4 book ai didi

Mercurial 撤消 merge

转载 作者:行者123 更新时间:2023-12-03 22:18:07 28 4
gpt4 key购买 nike

假设我们无意中将命名分支( ABC ) merge 到我们的 default 中。分支。
hg rollback不是一个选择,因为从那以后有几次提交。

有没有办法撤销这个?

最佳答案

您将需要 Mq 扩展。如果您没有打开它,请将其添加到您的 Mercurial.ini 中。或 .hgrc文件。

[extensions]
hgext.mq=

如果您不熟悉它, Mq extension让你操纵历史。好消息是,这将使我们能够修复您的 repo 。坏消息是,任何拥有困惑 repo 的克隆的人都必须再次克隆它,因为我们将改变历史。

首先,让你的 repo 的另一个克隆工作,所以我们不会搞砸任何事情。

现在,找到 merge 变更集的修订 ID( merge default 和您命名的分支)。写下来。我们将其称为 changesetM .现在找到下一个变更集的修订 ID。写下来。我们将其称为 changesetN .

获得这两个修订版 ID 后,转到命令提示符和 cd进入你的 repo 。然后输入以下内容,替换 changeset[M|N]具有适当的修订 ID。:
$ hg qimport -r changesetN:tip
# This will add all of your changes since the merge to the queue
$ hg qpop -a
# This pops them all out of your history.
$ hg strip changesetM
# This removes the merge changeset.
$ hg update -C default
# Make sure we're on the default branch
$ hg qpush -a
# Take the changesets in the queue and push them back onto your history.
$ hg qfinish -a
# Remove changesets from the queue and finalize them as normal changesets.

本质上,您是在默认分支之上重新构建新的变更集,删除流程中的 merge 变更集。完成后,您需要将更改推送到服务器上的新存储库,并让您的同事克隆新副本。

最后,如果您有任何其他 Mercurial 问题,也请查看 kiln.stackexchange.com .

更新

我忘了提及:如果有人基于仅在另一个分支中的某些内容进行了更改,则可能是 hg qpush -a将失败。你会看到一个 foo.txt.rejfoo.txt.orig文件周围。不幸的是,你必须自己解决这个问题。要修复它,请打开原始文件 .orig文件,以及 .rej文件并选择要 merge 的正确更改,将它们保存在原始文件中。 merge 后,使用 hg qrefresh将该补丁更新为新的 merge 补丁。从他们那里,你应该可以运行 hg qpush -a再次并继续。如果您在另一个补丁上再次遇到相同的错误,只需遵循相同的过程即可。

关于Mercurial 撤消 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3149985/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com