我是Mercurial的新手。我做了hg status
,我看到自上次提交以来发生变化的文件前面有M
。然后我尝试了hg update -C
。在我M
之前,有什么方法可以使用hg update -C
取回文件版本吗?或者我几乎搞砸了? :(因为hg update -C
会丢弃自上一次提交以来的任何更改
答案 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..。
简而言之:
hg heads
- 您将看到更改的头部在存储库中的某个位置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
:)
它消失了。 :(抱歉,这是个坏消息!