2013-05-14 99 views
6

我是Mercurial的新手。我做了hg status,並且我看到自上次提交之後發生更改的文件在前面有M。然後我嘗試hg update -C。有沒有什麼辦法可以在我做hg update -C之前找回M的文件版本?還是我很擰? :(因爲hg update -C丟棄自上次任何更改提交Mercurial - 在「hg update -C」後恢復未提交的更改

回答

-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 
:) 

它不見了:(很抱歉的壞消息

11

不幸的是,就在那裏! hg help update

options: 

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

正確的工作流程會一直到commit你未完成的更改(這大概CR吃掉一個新的頭)和merge你承諾你想要導入的版本。

如果您不喜歡必須提交一組一半的更改,請查看shelve擴展,該擴展正是爲此設計的:它暫時放棄所有或部分未提交的更改,允許您運行在您將它們重新帶回之前,請執行以下操作:hg。 (shelve未與mercurial分銷,但我認爲tortoisehg可能包含它)。

0

傑森很晚纔回答,但可能會幫助其他人。

我們遇到了同樣的問題,並找到了解決方案here..

簡單:

  1. hg heads - 你會看到你的變化頭STIL某處倉庫
  2. 副本ID你的頭,然後鍵入hg update <id_of_your_head>
相關問題