基本上发生了什么:
我将一堆文件从一个目录移动到另一个目录。 然后,我提交了更改并按下。 然后我注意到我的“移动”实际上不是移动,而是Mercurial,我想实际上复制了我想要移动的文件并将它们粘贴到新目录中,然后删除了原始文件。
意外的结果是,所有历史记录都丢失了,因为它不再是旧文件,而是新文件。
所以我想知道如何还原/回滚/撤消此更改?
我已经阅读了所有三种方法,但是我仍然不确定哪种方法最好。我只想撤消推送,以便我可以正确移动文件而不会丢失所有历史记录。
答案 0 :(得分:0)
您不能直接“撤消”推送,但是有一些方法可以从本质上抵消其效果。
选项1::最直接的选项是,如果您完全控制了收到错误提交请求的所有克隆。如果是这样,请对它们全部使用hg strip
删除错误的提交。
选项2:如果无法执行此操作,则可以删除错误添加的文件,并还原对原始文件的删除(example),然后按照您的要求重做操作本来打算。
选项3:更新到不良提交之前的提交。然后使用hg move
正确地重定位文件,并提交将创建新文件头的文件(因为您正在修改的版本早于当前提示)。然后将这个新头与笔尖合并。那应该使历史得以保留。