Mam kilka zmian, które wprowadziłem do mojego lokalnego repozytorium, ale jeszcze ich nie wysłałem. Ponieważ operacja trwa dłużej niż oczekiwano, chcę zamienić te zmiany na nazwaną gałąź, zanim skończę. Jak mogę to zrobić?Zmiany rtęciowe w nowym oddziale
Odpowiedz
Jak sugeruje znaku towarowego, MqExtension jest jednym rozwiązaniem dla Ciebie problemem. IMHO prostszy przepływ pracy to korzystanie z rebase extension. Załóżmy, że masz historii tak:
@ changeset: 2:81b92083cb1d
| tag: tip
| summary: my new feature: edit file a
|
o changeset: 1:8bdc4508ac7b
| summary: my new feature: add file b
|
o changeset: 0:d554afd54164
summary: initial
Oznacza to, rewizja 0
jest podstawą, na której rozpoczął pracę na swojej funkcji. Teraz chcesz mieć wersje 1-2
na nazwanym oddziale, na przykład my-feature
. Aktualizacja do rewizji 0
i utworzenia tego oddziału:
$ hg up 0
$ hg branch my-feature
$ hg ci -m "start new branch my-feature"
Historia teraz wygląda tak:
@ changeset: 3:b5939750b911
| branch: my-feature
| tag: tip
| parent: 0:d554afd54164
| summary: start new branch my-feature
|
| o changeset: 2:81b92083cb1d
| | summary: my new feature: edit file a
| |
| o changeset: 1:8bdc4508ac7b
|/ summary: my new feature: add file b
|
o changeset: 0:d554afd54164
summary: initial
użyć polecenia rebase
przenieść wersje 1-2
na rewizji 3
:
$ hg rebase -s 1 -d 3
ten wyniki na następującym wykresie:
@ changeset: 3:88a90f9bbde7
| branch: my-feature
| tag: tip
| summary: my new feature: edit file a
|
o changeset: 2:38f5adf2cf4b
| branch: my-feature
| summary: my new feature: add file b
|
o changeset: 1:b5939750b911
| branch: my-feature
| summary: start new branch my-feature
|
o changeset: 0:d554afd54164
summary: initial
To wszystko .. jak wspomniano w komentarzach do odpowiedzi Marka, poruszanie się po już wypychanych zestawach zmian ogólnie jest złym pomysłem, chyba że pracujesz w małym zespole, w którym jesteś w stanie komunikować się i wymuszać manipulację historią.
IMHO wadą tego rozwiązania jest wprowadzenie "atrapy" nowego atrybutu "moja gałąź" (tj. Takiego, który nie zmienia żadnych plików). – sschuberth
@sschuberth: Myślę, że bycie otwartym jest dobrą rzeczą. Jeśli dodatkowy zestaw zmian jest dla ciebie problemem, połącz go z kolejnym (np. Za pomocą polecenia 'fold' z wbudowanego rozszerzenia [histedit] (http://mercurial.selenic.com/wiki/HisteditExtension)). –
Jak wydrukować dziennik z drzewem ASCII? –
Możesz użyć MqExtension. Powiedzmy, że Zestawienia zmian przenieść są rewizje 1-3:
hg qimport -r 1:3 # convert revisions to patches
hg qpop -a # remove all them from history
hg branch new # start a new branch
hg qpush -a # push them all back into history
hg qfin -a # finalize the patches
Chcę zaimportować 63:64 i 66:68. Otrzymuję wersję 65 nie jest rodzicem 64 – Casebash
Co chcesz zrobić z 65? Mq może konwertować tylko kolejne zestawy zmian z głowy. Zmienia on zwykle niezmienny zestaw zmian na zmienne łatki, które można edytować. Spowoduje to zmianę skrótów (dotyczy wszystkich dzieci), więc nie można pominąć. –
Mam wiele zmian (w tym 65), które wprowadziłem na głównej gałęzi i pchnąłem – Casebash
wolę rozwiązanie łata opisać here Mark Tolonen
Co mam:
hg log -G
#default branch
@ changeset: 3:cb292fcdbde1
|
o changeset: 2:e746dceba503
|
o changeset: 1:2d50c7ab6b8f
|
o changeset: 0:c22be856358b
Czego chcę:
@ changeset: 3:0e85ae268e35
| branch: feature/my_feature
|
o changeset: 2:1450cb9ec349
| branch: feature/my_feature
|
o changeset: 1:7b9836f25f28
| branch: feature/my_feature
|
/
|
o changeset: 0:c22be856358b
rtęciowe poleceń:
hg export -o feature.diff 1 2 3
hg update 0
hg branch feature/my_feature
hg import feature.diff
Oto stan mojego lokalnego repozytorium
@ changeset: 6:0e85ae268e35
| branch: feature/my_feature
|
o changeset: 5:1450cb9ec349
| branch: feature/my_feature
|
o changeset: 4:7b9836f25f28
| branch: feature/my_feature
|
| o changeset: 3:cb292fcdbde1
| |
| o changeset: 2:e746dceba503
| |
| o changeset: 1:2d50c7ab6b8f
|/
|
o changeset: 0:c22be856358b
Teraz trzeba usunąć wersje 1 2 i 3 z domyślną gałęzi. Możesz to zrobić za pomocą polecenia strip z rozszerzenia mq. hg strip
usuwa zestaw zmian i wszystkich jego potomków z repozytorium.
Włącz rozszerzenie, dodając następujące linie do pliku konfiguracyjnego (.hgrc lub Mercurial.ini):
vim ~/.hgrc
i dodać:
[extensions]
mq =
A teraz rozebrać to repozytorium rewizji 1.
hg strip 1
i jesteśmy
@ changeset: 3:0e85ae268e35
| branch: feature/my_feature
|
o changeset: 2:1450cb9ec349
| branch: feature/my_feature
|
o changeset: 1:7b9836f25f28
| branch: feature/my_feature
|
o changeset: 0:c22be856358b
note: Zestawienia zmian są różni ale poprawki są takie same
Dla tych skłonny używać GUI
- Przejdź do
Tortoise Hg
->File
->Settings
następnie zaznaczyćrebase
.
żółw Restart UI
Utwórz nowy oddział, gdzie można się poruszać zmian. Kliknij bieżącą nazwę oddziału -> wybierz
Open a new named branch
-> wybierz nazwę oddziału.
- Jeśli zmiany, które chcesz przenieść nie zostały dokonane
public
(npdraft
) iść do 5. (Jeżeli zmiany zostały już opublikowane i są nie jesteś starszym deweloperem, powinieneś porozmawiać z kimś seniorem (zdobądź kozła ofiarnego), bo możesz spieprzyć sprawę, nie biorę żadnej odpowiedzialności :)).
idź do View
->Show Console
(lub Ctrl + L) następnie pisać w konsoli hg phase -f -d 2
- gdzie 2 jest najniższy rewizja będzie przeniesienie do nowego oddziału.
Przejdź do gałęzi i korekta (korekta powinna być najwyższy, jeśli jesteś w ruchu zmiany nowego oddziału utworzonego w kroku 3.)
Right Mouse
->Update
idź do oddziału i revsion będzie przeniesienie zmian z
Right Mouse
->Modify History
->Rebase
Kliknij
Rebase
i módl się, aby nie było konfliktów, połącz, jeśli musisz.Przepychanie zmian, w tym momencie wszystkie poprawki powinny nadal być
draft
.Przejdź do najwyższej wersji w gałęzi, którą przenosisz zmiany na
Right Mouse
->Change Phase to
->Public
.
Nadzieja to zaoszczędzić trochę czasu.
Świetna robota! spróbuję tego, tylko jedno pytanie - dlaczego na koniec zmienić fazę na publiczną? "Wszelkie zestawy zmian widoczne w zdalnym repozytorium są publiczne", więc czy w przypadku wypychania i tak nie będzie ono ustawione na publiczne? –
@JoshLeeDucks Podczas przesuwania nie zmieniają się automatycznie na "publiczne" (przynajmniej dla mnie nie). –
- 1. jak wprowadzić zmiany w nowym oddziale
- 2. Jak uzyskać zmiany w oddziale w Git
- 3. git - zmiany w oddziale, jaki został utworzony?
- 4. hg: Zatwierdź zmiany w innym oddziale
- 5. Jak mogę zatwierdzić bieżące zmiany w nowym oddziale przy użyciu TortoiseSVN i Subversion?
- 6. Przydatne haki rtęciowe
- 7. Rozgałęzienia rtęciowe i zakładki
- 8. Wprowadzanie bieżących zmian w nowym dziale Git
- 9. Mercurial: jak scalić zmiany w pliku, którego nazwa została zmieniona w innym oddziale?
- 10. Wykorzystanie dysku Git w oddziale
- 11. Wszystkie moje zmiany w bieżącym oddziale i przenieś je do nowego oddziału w Git
- 12. GIT - przepisanie kodu rdzenia w oddzielnym oddziale
- 13. Visual Studio 2015 - Zamelduj się w innym oddziale w TFS
- 14. Jak ponownie zastosować zatwierdzenia na niepowiązanym oddziale?
- 15. Czy istnieje sposób na wykrycie, czy zmiany w oddziale zostały pośrednio połączone z innym?
- 16. Zatwierdzam zmiany w innym oddziale niż aktualnie wyewidencjonowany oddział z subversion
- 17. przyjmowanie niezatwierdzonych zmian w niewłaściwym oddziale w prawej gałęzi
- 18. Moving niezatwierdzone zmiany do nowego oddziału
- 19. Łączenie niezatwierdzonych zmian w innym oddziale przy użyciu SVN
- 20. Scalaj 2 DataTables i przechowuj w nowym
- 21. Scalanie zdalnych zmian w oddziale, który nie jest bieżącym oddziałem
- 22. Jak uruchomić usługę w nowym wątku?
- 23. git, zmiana w lokalnym oddziale wpływa na inne lokalne oddziały?
- 24. Czyszczenie uprawnień specjalnych z folderów w oddziale
- 25. Git: scalanie tylko zmian dokonanych w oddziale
- 26. W której oddziale należy utworzyć obraz dokowany?
- 27. Git: Zmienianie nazwy katalogu w oddziale
- 28. Alias Git na bieżącym oddziale
- 29. Usuwanie wszystkich zatwierdzeń w oddziale po pewnym zatwierdzeniu
- 30. PDFBox: Jak zmodyfikować stronę i zapisać zmiany w nowym pliku (np. Usunąć adnotację do linku)?
możliwy duplikat [Jak przenieść zestaw zmian do nowej gałęzi w trybie mercurial] (http://stackoverflow.com/questions/2219756/how-to-move-some-changeset-to-a-new-branch- in-mercurial) –