2013-04-05 7 views
16

Jestem świadomy Mercurial for Beginners: The Definitive Practical Guide i odpowiedzi jak Mercurial merge branches? (abort: push creates new remote branches)Jak cofnąć „przerwać push tworzy nowe zdalne głowy na oddział” w mercurial

Oto ja przypadkowo stworzył sytuację, w której Mercurial chce utworzyć nowy zdalny głową. Jaki jest najlepszy sposób, aby to cofnąć i pozostawić niewielki lub żaden ślad tego błędu na odludziu?

###> hg push 
pushing to http://example.com 
searching for changes 
abort: push creates new remote heads on branch 'default'! 
(did you forget to merge? use push -f to force) 

###> hg revert --all -r tip 

###> hg update -C 
0 files updated, 0 files merged, 0 files removed, 0 files unresolved 

###> hg incoming 
comparing with http://example.com 
searching for changes 
no changes found 

###> hg summary 
parent: 488:e3db024fe901 tip 
Misc. 
branch: default 
commit: (clean) 
update: 6 new changesets, 2 branch heads (merge) 

###> hg pull 
pulling from http://example.com 
searching for changes 
no changes found 

###> hg glog 
@ changeset: 488:e3db024fe901 
| tag:   tip 
| summary:  Misc. 
| 
o changeset: 487:b207579b9d41 
| parent:  480:ce775708800c 
| summary:  Misc. 
| 
| o changeset: 486:59a7a5b34c7f 
| | user:  other 
| | summary:  fixes 
| | 
| o changeset: 485:b28264333e18 
| | user:  other 
| | summary:  binary 

Jeśli połączyć to rodzaj wydaje się OK:

hg merge 
abort: outstanding uncommitted merges 

Ale hg diff pokazuje wszelkiego rodzaju zmian nie czynią. Chcę ponownie zastosować moje zmiany ... w jaki sposób mogę przywrócić wszystko do pojedynczej wskazówki, porzucając wszystkie lokalne zmiany?

+0

co dzieje się z wyjściami wychodzącymi? – Tom

Odpowiedz

10

Wygląda na to, że po wykonaniu hg merge nie zatwierdzono wynikowego zestawu zmian.

Po scaleniu w innym oddziale (w twoim przypadku może być konieczne podanie hg merge 486, aby scalić zmiany innych użytkowników), zostanie on scalony z tą gałęzią w twój katalog roboczy. Następnie należy sprawdzić, czy wszystkie konflikty zostały rozwiązane (jeśli takie istnieją) za pomocą narzędzia scalania lub ręcznie edytować pliki (a następnie uruchomić hg resolve w przypadku jakichkolwiek konfliktów). Gdy to zrobisz, musisz hg commit swój nowy, scalony zestaw zmian.

To wyjaśnia, dlaczego hg diff daje wiele zmian, których nie wprowadziłeś - są to zmiany wprowadzone w drugim oddziale, których jeszcze nie zatwierdziłeś. Jeśli uruchomisz hg summary lub hg parents w swoim katalogu roboczym, powinieneś zobaczyć dwóch rodziców wymienionych: 486 i 488. Powinieneś hg commit ten katalog roboczy, tworząc nowy połączony 489.

Jeśli chcesz cofnąć bieżące scalanie i zacząć od nowa, masz rację, próbując uruchomić hg update -C, co spowoduje przywrócenie katalogu roboczego do pierwotnego stanu (niezintegrowanego).

Jeśli chcesz pozbyć swoimi zmian (487 i 488 - Ci stwierdzić, że nie masz nic przeciwko ponownej Zastosowanie zmian), najprostszym rozwiązaniem bez uciekania się do rozszerzenia jest po prostu ponownie sklonować repozytorium i kontynuuj swoją pracę od tego miejsca.

7

Aby pozbyć się zmian (ex 487 i 488): Jeśli czujesz się (jak ja), który ponownie klonowania repozytorium, zgodnie z zaleceniami powyżej nawet officially recommended here jest śmieszne, to powinieneś dostać MqExtension

Po MQ włączona, można łatwo usunąć zmiany nie chcesz:

hg strip 487 
hg strip 488 
+0

Oficjalnie zalecane łącze jest martwe. –

+1

zaktualizowano linki do nowej strony dokumentacji mercurial –

2

nie zrobiłem scalanie, ale nagle ja przeglądania wiadomości op opublikował. Kiedy robię hg pull, w linii poleceń pokazuje Przerwij! Domyślnie nie znaleziono repozytorium.

Powiązane problemy