如何“撤消”对错误分支的本地提交

时间:2016-11-22 12:16:14

标签: mercurial tortoisehg

我在主分支中对Visual Studio进行了一些代码更改,并尝试在TortoiseHG中的新分支中提交更改,但显然我不小心将更正提交到主分支。我没有将更改推送到远程存储库,但如果我尝试对更改执行“退出”,则会收到错误消息“无法在不同的分支上撤消更改”,即使它明确指出已将更改提交到主要分支。

有谁知道为什么我会收到此错误消息以及如何将更改移动到正确的分支中?

3 个答案:

答案 0 :(得分:3)

只要您的更改尚未推送到其他位置,就有两种选择。

a)使用hg rebase将一个变更集及其所有后代置于另一个变更集之上:

 hg rebase -s FIRST_CHANGESET_TO_MOVE -d DESTINATION

b)不太推荐的方法,只有当你想要撤消一个提交而没有提取或提交任何东西时才能使用hg rollback。但即使在这些情况下hg rebase似乎也更容易使用。

答案 1 :(得分:1)

首先,您不希望撤消,因为撤消已推送/已发布的更改。

有多种方法可以解决此问题:

存储库 - &gt; <强>还原 /撤消

这将取消您上次提交并直接使用未提交的更改。然后,您可以重新确认选择新的分支名称。

如果由于某种原因回滚/撤消不起作用:

  1. 更新到提交的父级。
  2. 右键点击提交 - &gt; 还原所有文件
  3. 再次提交更改 - 确保选择新的分支名称。
  4. 右键单击要删除的上一个提交 - &gt;修改历史记录 - &gt;剥离(需要在文件 - >设置 - &gt;扩展中启用条带扩展名)

答案 2 :(得分:0)

我能够通过备份提交中的所有文件来解决它,在TortoiseHG中添加扩展名“eol”和“mq”,右键单击草稿分支并选择“修改历史记录 - &gt;剥离。 ..“。之后我再次添加备份文件并将它们提交到正确的分支。

由于我刚开始使用TortoiseHG,我必须建议其他人谨慎行事。