Właśnie zaktualizowałem do wersji 2.1.0. (A także emacs 25.0.50 i git 2.3.1.)
Wcześniej w *magit*
buforze mogłem:
- Wybierz przystojniak w obszarze Nieustawiony.
- Wpisz vi odpowiedz „tak”, aby to odwrócić.
To było przydatne.
Ale teraz w MAGIT 2.1.0 daje błąd: "Cannot reverse unstaged changes"
.
Czemu?
Biorąc podpowiedź z komunikatu o błędzie, odkryłem, że wciąż mogę to zrobić, choć w nieco „wsteczny” sposób, wykonując więcej kroków:
- stage przystojniak. (Czuje się do tyłu; przybliżając go do stanu popełnionego.)
- Przewiń w dół i wybierz go w obszarze etapowym.
- Naciśnij v, odpowiedz tak.
- Jednak przystojniak jest wciąż wystawiany, więc w końcu muszę go uzaatakować.
Czy to błąd, czy jest to celowe i / lub jestem gęsty? Jeśli to drugie, czy możesz mi pomóc zrozumieć?
AKTUALIZACJA: Po dokładnym poinformowaniu RTF widzę, że istnieją dwie komendy:
- v
magit-reverse
Odwróć zmianę w punkcie drzewa roboczego. - k
magit-discard
Usuń zmianę w punkcie z drzewa roboczego.
Wygląda na to, że k magit-discard
robi to, do czego byłem przyzwyczajony vwcześniej. Działa na przystojniaku.
Więc praktycznie muszę po prostu ponownie wyćwiczyć pamięć mięśni, aby móc z niej korzystać k. Mógłbym to opublikować jako odpowiedź własną. Ale wydaje mi się, że wciąż jestem ciekawy uzasadnienia, ponieważ wyobrażam sobie, że zrozumienie pomoże mi lepiej zrozumieć magit.
k
odrzuca również niezatwierdzone zmiany we wcześniejszych wersjach magit i wydaje się właściwym poleceniem do tego, co robisz.v
jest dla git revert: utworzenie nowego zatwierdzenia, które spowoduje odwrotną zmianę w stosunku do poprzedniego. Wydaje mi się, że cofnięcie zmiany, która nie została jeszcze zatwierdzona, jest równoznaczne z jej odrzuceniem, ale „przywracanie” ma określone znaczenie jako polecenie git.v
był związanymagit-revert-item
(terminologia „odwrotna” pochodzi stąd, @PythonNut), a dla elementów niestacjonarnych robił tomagit-discard-item
(jak również jest to związanek
) - patrz wiersz 4872 tutaj . Najwyraźniej przypadkowo nauczyłem się tego specjalnego znaczeniav
, które zadziałało, kiedy powinienem był nauczyć się używaćk
.Odpowiedzi:
Magit implementuje pięć „wariantów zastosowania” opisanych w instrukcji : etap, wycofanie, „regularne stosowanie”, odrzucenie i odwrócenie. Pierwsze trzy powinny być dość oczywiste dla większości użytkowników Git. Dwa ostatnie nie istnieją w porcelanie Git (w Magit są realizowane za pomocą poleceń hydraulicznych Git i Emacsa Lispa).
Te dwa warianty są opisane w następujący sposób:
Te dwa warianty robią bardzo różne rzeczy, więc żaden z tych wariantów nie powinien wracać do drugiego wariantu w przypadkach, gdy sam nie może być użyty. Zachowanie starego zachowania (polegającego na cofaniu się z odwrotności do odrzucania w niektórych kontekstach) może być wygodniejsze na krótką metę, ale na dłuższą metę uniemożliwia użytkownikom zrozumienie, do czego służą te dwa warianty.
Odrzucanie jest znacznie bardziej niebezpieczne niż odwracanie . Pierwsze „odrzuca niezaangażowane zmiany” (zmiany te są utracone, nigdzie już ich nie ma), podczas gdy drugie „dokonuje zmian”, przyjmując starszą zmianę i robiąc coś przeciwnego w drzewie roboczym (stara zmiana nie zostaje utracona, nadal znajduje się w zatwierdzeniu lub indeksie).
Powrót od „tworzenia” do „usuwania” jest bardzo niebezpieczny, więc Magit już tego nie robi.
Pamiętaj również, że korzystając z nowych trybów czyszczenia , możesz zabezpieczyć się przed utratą zmian spowodowanych przypadkowym odrzuceniem.
źródło
Wygląda jakbym przypadkowo dowiedziałem się, że vzobowiązany do
magit-revert-item
, nie używane do zrobićmagit-discard-item
w tym szczególnym przypadku Unstaged porcji. Zobacz<=== HERE ===
komentarz, który umieściłem poniżej:Źródło: kod 1.4.2 .
Ale teraz tak się nie dzieje:
Źródło: master :
kJest jednak bezpośrednio związany z
magit-discard-item
. Powinienem był nauczyć się tego używać. To działało przed 2.1.0 i nadal działa.Podsumowując, magit 2.1.0 został znacznie przeprojektowany. Jest nieuniknione, że niektóre dziwne przypadki narożne mogły nie przetrwać. I zgodziłbym się, że nie muszę przeżyć. Ponownie nauczę się klucza.
źródło