Wydałem hg qnew
, nie zdając sobie sprawy, że zawiera ona wszelkie zaległe zmiany w poprawce. Chciałbym to potwierdzić i wybrać tylko określone zmiany za pomocą hg qrecord
. Jak mogę cofnąć qnew
?Jak cofnąć "hg qnew"?
Odpowiedz
Twoja odpowiedź na pewno działa - z nowszych Mercurial może użyć hg strip --keep
aby uniknąć robi krok importowania:
$ hg strip --keep .
$ hg qdelete patch-name
Flaga --keep
powoduje, że pasek zignoruje działającą kopię podczas pracy, to znaczy usuwa commit (jak zrobiłby to hg qpop
), ale nie cofa zmian w plikach . Po rozebraniu masz jeszcze łatkę z serii (bez użycia), którą możesz następnie usunąć.
Znalazłem się anwer here:
hg qpop
hg import --no-commit .hg/patches/patch-name
hg qdelete patch-name
dodaj lepszy sposób, jeśli wiesz.
Aktualizacja: W oparciu o odpowiedź Aldo, istnieje inny sposób:
hg qnew test
# We can undo the above qnew as:
hg qrefresh -X '*'
hg qpop -f
hg qdelete test
Jeśli chcesz po prostu cofnąć ostatni qnew
oporowych wszystkich zmian, jedna opcja:
qcrefresh 123
hg qpop -f
hg qdelete <name of the patch>
Uwaga, 123
to tylko przypadkowy ciąg: mówisz mercurial tylko zawierać (oby nonexistsnt) 123
plik w aktualnej poprawce. Nowsze wersje Mercurial Po wydaniu zostanie wyświetlone ostrzeżenie o tym, że plik 123
nie istnieje, ale jest to dokładnie to, czego chcemy tutaj.
Jeśli chcesz zachować niektóre zmiany w bieżącej ścieżce, można użyć komendy qcrefresh
z crecordextension, co pozwala wybrać graficznie zmiany mają zostać uwzględnione w aktualnym patchem. Trzeba download go z Bitbucket, rozpakować archiwum i skonfigurować go w .hgrc
:
[extensions]
crecord = <path/to/crecord/package>
- 1. Jak cofnąć hg init?
- 2. Hg pasek vs hg backout i hg przywrócić
- 3. Jak cofnąć Cofnij w mercurial
- 4. Jak zrezygnować z połączenia hg?
- 5. Jak przywrócić Mercurial hg pull?
- 6. Jak zrobić "hg backout X" w Git?
- 7. Mercurial: jak cofnąć ostatnie zanurzenie commit?
- 8. Jak cofnąć usunięcie svn
- 9. Jak cofnąć wyczyść git
- 10. Jak cofnąć "kopię svn"
- 11. jak cofnąć zapytanie mysql?
- 12. Jak cofnąć aktualizację RequestFactory
- 13. Jak cofnąć deklarację `declaration`?
- 14. Jak cofnąć zatwierdzenie
- 15. Jak uniknąć przypadkowego "hg push" zamiast "hg qpush"?
- 16. hg: Jak zmienić język mojej instalacji Mercurial (hg)? (MacOS)
- 17. Jak pozbyć się zestawu zmian w Hg?
- 18. bitbucket, "hg push" i "hg update"
- 19. Jak cofnąć squash git merge?
- 20. Jak cofnąć "Rozwiązania" w TortoiseGit?
- 21. Jak cofnąć System.loadLibrary w Javie
- 22. Jak cofnąć aktualizację git-index?
- 23. Jak cofnąć event.stopPropagation w jQuery?
- 24. Jak cofnąć "surroundContents" w javascript?
- 25. Jak mogę cofnąć zatwierdzenie SVN?
- 26. Ruby/byebug/binding.pry: Jak cofnąć?
- 27. Polecenie Mercurial do łączenia pullów hg; hg up
- 28. Jak cofnąć „przerwać push tworzy nowe zdalne głowy na oddział” w mercurial
- 29. hg służyć w MacHg
- 30. git cofnąć usunięte pliki
To rozszerzenie wydaje się bardzo obiecująca, a jako użytkownik darcs Lubię ten sposób wybierając zmian interaktywnie. Jednak nie odpowiada na moje pytanie - musiałem cofnąć "qnew", co już się wydarzyło. –
Jeśli dobrze rozumiem twoje pytanie, w rzeczywistości nie musisz cofać 'qnew': możesz bezpośrednio użyć komendy' qcrefresh', aby wykluczyć zmiany, które nie zostały dołączone. Wykluczone zmiany pozostaną zmianami lokalnymi, więc po 'qcrefresh' możesz uwzględnić je wszystkie w nowej poprawce za pomocą' qnew' lub nawet użyć 'qcrecord' tylko do wybrania ich podzbioru. – Aldo
Być może po prostu nie rozumiem, jak prawidłowo korzystać z rozszerzenia. Czy mógłbyś dodać serię poleceń zaczynając od 'hg qnew' na zmodyfikowanym repozytorium, które kończy się tak, jakby' qnew' nigdy nie został wywołany? Próbowałem tego używając 'qrefresh' przedtem (co, jak przypuszczam, robi to samo, co' qcrefresh', tylko nieinteraktywnie), ale bez powodzenia. –