10

我是 Mercurial 的新手。我做到了hg status,我看到自上次提交以来更改的文件M在前面。然后我尝试了hg update -C。有什么办法可以让我找回M之前的文件版本hg update -C吗?还是我几乎搞砸了?:( 因为hg update -C丢弃自上次提交以来的任何更改

4

4 回答 4

15

不幸的是,它就在hg help update

options:

-C --clean     discard uncommitted changes (no backup)

正确的工作流程应该是commit您未完成的更改(这可能会创建一个新的头部)和merge您的提交以及您想要导入的修订。

如果您不喜欢提交一组半生不熟的更改,请查看shelve专门为此设计的扩展:它暂时搁置所有或部分未提交的更改,允许您hg在带来操作之前运行操作再次回来。(shelve不与 mercurial 一起分发,但我认为tortoisehg可能包括它)。

于 2013-05-16T11:15:35.740 回答
1

好吧,让我们来看看:

PS C:\dev> hg init foo
PS C:\dev> cd .\foo
PS C:\dev\foo> echo ":)" > file.txt
PS C:\dev\foo> hg add
adding file.txt
PS C:\dev\foo> hg com -m ":D"
PS C:\dev\foo> echo "DDDD" >> .\file.txt
PS C:\dev\foo> hg sta
M file.txt
PS C:\dev\foo> hg up -C
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
PS C:\dev\foo> hg sta
PS C:\dev\foo> dir


    Directory: C:\dev\foo


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         5/14/2013   4:06 PM            .hg
-a---         5/14/2013   4:06 PM         10 file.txt


PS C:\dev\foo> type .\file.txt
:)

没了。:( 关于这些坏消息我很遗憾!

于 2013-05-14T23:08:18.633 回答
1

一些 IDE,比如 Intellij,将与版本控制分开,跟踪“本地历史”,我会在这种情况下检查它。

于 2019-11-06T22:57:19.217 回答
-1

杰森的答案很晚,但可能会帮助其他人。

我们遇到了同样的问题,在这里找到了解决方案......

简单来说:

  1. 类型hg heads- 你会看到你的更改的头部仍然在存储库中的某个地方
  2. 复制您的头部 ID 并输入hg update <id_of_your_head>
于 2016-12-22T20:42:32.053 回答