2013-05-14 11 views
6

Jestem nowy w Mercurial. Zrobiłem hg status i zobaczyłem, że pliki, które zmieniły się od ostatniego zatwierdzenia mają przed sobą M. Następnie wypróbowałem hg update -C. Czy jest jakiś sposób, aby odzyskać wersję plików z M zanim zrobiłem hg update -C? Czy jestem całkiem spieprzony? :(od hg update -C odrzutów wszelkie zmiany od ostatniego popełnićMercurial - przywróć niezatwierdzone zmiany po "hg update -C"

Odpowiedz

-1

Dobrze, rzućmy okiem.

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

To zaszło :(Niestety dla złych wiadomości

11

Niestety, to właśnie tam w! hg help update:

options: 

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

prawidłowe workflow byłoby commit zaległe zmian (co przypuszczalnie cr eate a new head) i merge twój commit z wersjami, które chciałeś zaimportować.

Jeśli nie lubisz, gdy masz obowiązek wypróbować niedopieczony zestaw zmian, sprawdź rozszerzenie shelve, które zostało zaprojektowane właśnie w tym celu: tymczasowo odkłada wszystkie lub niektóre z niezatwierdzonych zmian, co pozwala na uruchomienie hg operacji przed ponownym ich wprowadzeniem. (shelve nie jest dystrybuowany z mercurial, ale myślę, że może go zawierać tortoisehg).

0

Dość późna odpowiedź dla Jasona, ale może pomóc innym.

Mieliśmy ten sam problem i ZNALAZŁEM ROZWIĄZANIE here...

W skrócie:

  1. typu hg heads - widać szef wprowadzonych zmian jest stil gdzieś w repozytorium
  2. kopia ID głowy i wpisz hg update <id_of_your_head>
Powiązane problemy