我是 Mercurial 的新手。我做到了hg status
,我看到自上次提交以来更改的文件M
在前面。然后我尝试了hg update -C
。有什么办法可以让我找回M
之前的文件版本hg update -C
吗?还是我几乎搞砸了?:( 因为hg update -C
丢弃自上次提交以来的任何更改
问问题
15376 次
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
杰森的答案很晚,但可能会帮助其他人。
我们遇到了同样的问题,在这里找到了解决方案......
简单来说:
- 类型
hg heads
- 你会看到你的更改的头部仍然在存储库中的某个地方 - 复制您的头部 ID 并输入
hg update <id_of_your_head>
于 2016-12-22T20:42:32.053 回答