Mercurial - 在“hg update -C”之后恢复未提交的更改

时间:2013-05-14 22:48:01

标签: mercurial

我是Mercurial的新手。我做了hg status,我看到自上次提交以来发生变化的文件前面有M。然后我尝试了hg update -C。在我M之前,有什么方法可以使用hg update -C取回文件版本吗?或者我几乎搞砸了? :(因为hg update -C会丢弃自上一次提交以来的任何更改

4 个答案:

答案 0 :(得分:13)

不幸的是,它就在hg help update

options:

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

正确的工作流程可能是commit您未完成的更改(可能会创建一个新的头部)和merge您提交的要修改的修订版本。

如果您不想提交一组半生不熟的更改,请查看专为此设计的shelve扩展程序:它暂时将所有或部分未提交的更改放在一边,允许在再次将它们带回之前,您可以运行hg个操作。 (shelve不与mercurial一起发布,但我认为tortoisehg可能包含它。)

答案 1 :(得分:1)

某些Intellij之类的IDE将与版本控制分开,以跟踪“本地历史记录”,在这种情况下,我会进行检查。

答案 2 :(得分:0)

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

我们遇到了同样的问题并找到了解决方案here..

简而言之:

  1. type hg heads - 您将看到更改的头部在存储库中的某个位置
  2. 复制您的头部ID并输入hg update <id_of_your_head>

答案 3 :(得分:-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
:)

它消失了。 :(抱歉,这是个坏消息!