恢复“放弃所有更改”合并效果

2023-12-29

让我们假设它是通过“放弃合并中的所有更改...”选项执行合并的,但是意外。

并且这个错误的提交已经被提交到“中央”存储库中。

如果我该怎么处理这个案子need以正确的方式合并分支更改?

重现案例的命令:

hg init mr
cd mr

echo "123" > file.txt
hg add
hg ci -m "initial"

hg branch br
echo "234" >> file.txt
hg ci -m "in branch"

hg up default
echo "567" >> file.txt
hg ci -m "in default"

在这些命令之后打开 tortoisehg,并将第二个修订版(默认头)与br带有“放弃...”选项的分支。

UPD:

这是一个关于做相反的事情的问题如何使用 Mercurial 命令行合并以摆脱头部,就像我可以使用 TortoiseHg 那样? https://stackoverflow.com/questions/4197744/how-to-merge-to-get-rid-of-head-with-mercurial-command-line-like-i-can-do-with-t ;-)

但仍然找不到如何恢复该步骤:-(


一种方法是重做合并,然后再进行一次合并并丢弃。

在您的示例中,更新回第二个修订版(执行错误合并之前的当前工作目录父目录),然后与其他分支重做合并。这次一定要好好做。

这会给你另一个头。

然后,与旧的、不正确的合并合并,并选择丢弃。现在您已经用正确的合并有效地绕过了这一合并。

如果您不确定这些步骤,请进行本地克隆并进行实验,您始终可以放弃它并重新克隆并重试。

修订版 3 是旧的、不正确的合并,我在其中选择了丢弃。执行合并 4 和 5 后,该合并的痕迹就消失了,一切都恢复正常。是的,历史看起来有点奇怪,但是相信我,完全消除不良合并的清理程序比历史时间线上的小问题要糟糕得多。

基本上,在合并失败后,您会遇到这种情况:

            +-- botched merge
            v
    0---2---3
     \     /
      1---+

因此,您更新回错误合并之前的工作文件夹父级,并进行另一次合并,这次是正确的。现在看起来像这样:

            +-- botched merge
            v
    0---2---3
     \   \ /
      \   x
       1-+-4
           ^
           +-- good merge

您的工作文件夹现在处于修订版 4,因此您进行了另一次合并,这次是修订版 3(错误的合并),并选择放弃这些更改,您会得到以下结果:

            +-- botched merge
            v
    0---2---3-5  <-- final merge, discard 3
     \   \ / /
      \   x /
       1-+-4
           ^
           +-- good merge

TortoiseHg 的显示方式如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

恢复“放弃所有更改”合并效果 的相关文章

  • hg 存档到远程目录

    有没有办法通过 SSH 将 Mercurial 存储库存档到远程目录 例如 如果可以执行以下操作 那就太好了 hg archive ssh email protected cdn cgi l email protection path to
  • Mercurial .hgrc 文件

    默认情况下 在 Windows XP 上 Mercurial 将 hgrc 文件存储在 好吧 就我而言 c Documents and Settings srooks 我如何更改该位置 并让它在其中查找 hgrc 文件 例如 c Confi
  • 如何将 N 个本地最顶层提交转换为 MQ 补丁?

    我想将我的最后一次提交安排为 MQ 补丁 所有提交都是本地的 从不推送到服务器 但并非所有本地提交都会被转换 假设我进行了 10 次提交 从未推送 现在我希望将最后 5 次提交转换为补丁 我该怎么做 简洁版本 hg qimport r 5
  • 我可以在 Mercurial 中进行分支而不克隆存储库吗?

    最近 我开始尝试 Mercurial 因为它总是因其简单性和 正常工作 原则而吸引我 或者至少 其他人总是这么描述它 他们通常也将其描述为 实际上与 git 相同 只有一些你不会注意到的细微变化 只是我发现事实并非如此 我的汞分支有问题 如
  • 将 CVS 升级到 git/hg 的技巧?

    我们仍然使用 CVS 我使用 git 和 hg 供我个人使用 尽管我对这两个工具仍然是新手 但我意识到它们更现代 更好 更快 分布式等 只是每个人都如此习惯 CVS 以至于我觉得如果我是推荐并实际将我们当前的 CVS 服务器升级 移植 转换
  • hg Convert --authors errorUsers <-- 文件的格式是什么?

    Related here https stackoverflow com questions 732819 can i change the username on a mercurial changeset 757604 757604 指
  • 如何使用 TortoiseHg (Mercurial) 下载代码

    我正在尝试下载代码世界上最差的stackoverflow克隆 http code google com p theworldsworststackoverflowclone source checkout 起初我尝试过Tortoise SV
  • 为 Mercurial 执行 hgweb.cgi 时,指定的 CGI 应用程序行为不当...

    我有 IIS 6 我将 Mercurial 安装在 c program files mercurial 中 我在 c program files python 中安装了 Python 2 6 I added extension handli
  • 正在搜索 Mercurial 存储库 (TortoiseHG)?

    有什么方法可以输入特定的文件名 例如 xyz txt 并使用 TortoiseHG 在 Mercurial 存储库中搜索该文件的任何签入 如果没有 为什么不呢 这不就是版本控制的用途吗 在 Hg Repository Explorer 窗口
  • DVCS命令的统一

    当处理多个 开源 项目时 多个版本控制系统开始出现问题 虽然它们共享共同的操作 但我经常在输入时犯错误hg add反而git add 我记得前段时间看到过一个项目 通过提供基本命令以统一的方式访问不同的源代码控制软件提交 ci add等在外
  • Mercurial 和 TortoiseHG - 推送更改后更新远程存储库

    将更改推送到远程存储库时 是否无法自动运行更新以使更改 文件可用 Use changegroup挂在远程端 如Mercurial 常见问题解答中进行了描述 http mercurial selenic com wiki FAQ FAQ 2F
  • 撤销 Mercurial 中的最后一个 addremove 操作?

    I typed hg addremove 但后来意识到有些文件不应该成为提交的一部分 我应该做的是将这些文件添加到 hgignore 中 然后运行 addremove 并提交 有办法解决这个问题吗 如果您还没有提交 只需使用hg forge
  • Mercurial 合并的默认主干版本?

    当我们将 Mercurial 功能发布存储库中的更改合并到主干存储库时 我们总是会与 Maven POM 文件 pom xml 和 Mercurial hgtags 文件发生冲突 我们总是想保留主干版本 我们永远不需要功能发布存储库版本 有
  • GIT 或 SVN 或...适用于前端开发人员

    我最近开始将一些项目导入到工作中的 Subversion 存储库中 在接下来的几周内 我希望团队中的每个人都能负责自己的源代码控制管理 我选择 SVN 而不是 GIT 的原因是我想要everyone团队中的人员 包括设计师 前端人员 集成商
  • Mercurial:带参数的别名

    我想创建一个别名 以便在运行时 hg pushbranch lt
  • 如何克隆存储库并保留文件时间戳?

    如何从新机器上的服务器获取源代码的副本 但保留文件时间戳 通过以下步骤 所有时间戳均设置为当前日期 时间 手动创建存储库的根文件夹 光盘放入其中 执行一个hg init 使用 TortiseHg 将存储库从服务器克隆到文件夹 是否有一个选项
  • 如何通过中央 CVS 存储库在本地使用 Mercurial?

    目前我公司正在使用cvs进行版本控制 我想在本地使用 Mercurial 因为它具有灵活性和合并功 能 这将使我的工作变得更加轻松 这应该怎么做呢 First 本地获取CVS存储库 Second 在此 CVS 存储库上本地创建一个 Merc
  • 如何使用修订号而不是 GUID(在 TeamCity 中)标记我的构建?

    我正在尝试与 TeamCity 进行 持续集成 我想以增量方式标记我的构建 而 VCS 提供的 GUID 不如简单递增的数字那么有用 我希望该数字与 Mercurial 中的修订版数字实际匹配 我的情况 水银信息 我希望将构建标记为 0 0
  • Mercurial 在提交之前丢弃所有添加的文件

    刚刚犯了使用错误addremove尝试删除一些未使用而已删除的文件hg remove 现在有数百个文件将在下次提交时添加 无论如何 我是否可以快速删除所有这些添加的文件 而不必求助于 bash 脚本 甚至更糟hg removing or f
  • 如何在不访问 hg 的情况下提取 BitBucket 存储库

    我想知道是否可以在不访问 hg 的情况下将私人 Mercurial 存储库拉到服务器上 我有 SSH 访问权限 但无法安装 HG 我正在考虑某种使用 http 访问的 Python 脚本或其他东西 但我不确定 我还认为这可能只有通过公共回购

随机推荐