mercurial - 撤消 hg 推送(取消?)

标签 mercurial merge tortoisehg

我犯了一个大错误,需要一些帮助来撤销它。

我们有两个存储库 - 一个相当稳定的存储库,以及一个我们正在处理更改的存储库。我刚刚在我们的稳定存储库中进行了缺陷修复,并将其移至工作存储库。我从稳定存储库中拉取、 merge ,然后意外推送到稳定存储库。

稳定的存储库现在看起来像这样:

*merge
| \
|  \
|   *b
*a  |
|  / 
*c

其中 a 是应该成为稳定存储库提示的提交,b 是我们在开发存储库中完成的所有内容, >c 是我们对开发存储库进行分支的点。

我该如何返回:

*a
|
*c

(我知道我无法真正让更改消失,我只是在寻找功能结构......)

我读过一些东西,让我认为 hg backout 是我需要的命令,但我不太确定它的作用。

最佳答案

hg rollback恢复最后一个事务,因此您将留下未完成的 merge ,您必须使用 hg update -C出去。

如果您不需要 *b(您在另一个克隆中拥有它),则启用内置 MQ 扩展并运行 hg strip -r <*b> 。它将摆脱 *b 和 *merge。默认情况下,它会保存备份,以防您再次改变主意。

<小时/>

更新(根据@Rudi的评论:抱歉我错过了“已推送”部分)

由于 merge 已经被推出,永远不要按照我之前的建议进行操作。来自其他开发者的仇恨电子邮件将是最好的结果。

这样做:

hg up -r<*merge>
hg revert -r<*a> -a
hg ci -m "undo unintended merge"

或者你可以更犹太:

hg up -r<*merge>
hg backout -r<*merge> --parent<*a>

关于mercurial - 撤消 hg 推送(取消?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765208/

相关文章:

svn - 在短时间内向 SVNers 教授 Mercurial

mercurial - TortoiseHG 将本地 merge 到分支头

svn - 如何将新的文件夹结构合并到 SVN 中?

mercurial - 使用 TortoiseHg 在台式机和笔记本电脑之间共享 Mercurial 存储库

mercurial - TortoiseHG:无法部分提交 merge

git - 版本控制 : Managing Common Component Source

Mercurial:回顾性 merge 修订

python - 我需要比较 2 个不同数据帧的 2 个字段(如果匹配),我们需要填充详细信息,否则在 python 中填充空值

python - 将数据框与不可散列的列合并

mercurial - 有人成功使用 TortoiseHg 的 "Auto Exclude List"吗?