Przejdź do głównej zawartości

Edycja historii

W jj przepisywanie historii to codzienna praca, a nie ryzykowne wyjście awaryjne. Gdy zmieniasz commit, Wyrm robi za Ciebie rebase wszystkiego, co leży na nim. Każda z poniższych edycji to jedna operacja, więc cofnięcie ją wycofuje.

Domyślnie jj traktuje Twój trunk (np. main@origin) i tagi jako niezmienne i odmawia ich przepisania. Przełącznik 🛡 to obchodzi, gdy naprawdę o to chodzi.

Większość poleceń znajdziesz w menu kontekstowym commita w logu (prawy przycisk), w sekcji Operacje na commitach. Rzadziej używane są w Więcej.

Zaznacz commit i wybierz Podziel…. W oknie Podziel commit zaznacz pliki, które mają trafić do pierwszego commita, albo rozwiń fragmenty pliku i wybierz pojedyncze fragmenty (hunki). Kliknij Podziel. Reszta zostaje w drugim commicie na wierzchu.

Możesz też dzielić prosto z diffa: każdy nagłówek fragmentu ma przycisk Podziel.

  • Squash do rodzica (S): wchłania zaznaczony commit do jego rodzica.
  • Squash do innego commita: zaznacz commit, potem kliknij prawym przyciskiem commit, do którego chcesz go wchłonąć, i wybierz Squash … do ….
  • Kilka commitów naraz: zaznacz ciąg sąsiednich commitów i wybierz Squash N commitów razem.
  • Squash z opcjami… (w Więcej) może zachować opróżniony commit albo zachować tylko opis rodzica.

Poprawiłeś w kopii roboczej kilka rzeczy, które należą do starszych commitów? Zaznacz @ i wybierz Wchłoń do przodków (A). jj przenosi każdy zmieniony wiersz do commita, który jako ostatni go zmieniał, a to, czego nie potrafi przypisać, zostawia w @.

W diffie dowolnego commita każdy nagłówek fragmentu ma cztery przyciski:

  • Squash ↑: przenosi fragment do commita rodzica.
  • Przenieś…: przenosi go do dowolnego innego commita.
  • Podziel: wydziela go do osobnego commita.
  • Odrzuć: usuwa go z tego commita, więc plik wraca tam do wersji z rodzica.

Aby działać na kilku fragmentach, zaznacz je (Space zaznacza fragment); ⇧-klik wybiera pojedyncze wiersze. Pasek nad diffem pokazuje, ile fragmentów i wierszy jest zaznaczonych. Przy zaznaczeniu ⇧S robi z niego squash, a ⌫ je odrzuca. Odrzucenie najpierw pyta o potwierdzenie. Pliki binarne, ze zmienioną nazwą lub z konfliktami oferują tylko działania na całym pliku.

Kliknięcie fragmentu prawym przyciskiem oferuje te same ruchy: Squash fragmentu do rodzica, Odrzuć zmiany fragmentu, Przenieś fragment do….

W panelu rewizji zaznacz jeden lub więcej plików i użyj Squash do rodzica, Przenieś do… lub Przywróć pliki. Przenieś do… otwiera Przenieś zmiany do…: wpisz Rewizja docelowa (bookmark, change ID lub revset) i kliknij Przenieś.

Możesz też przeciągnąć plik lub fragment na commit w logu i wybrać Squash tutaj.

Kliknij prawym przyciskiem plik wśród zmian commita:

  • Edytuj w tej rewizji… otwiera plik w takiej postaci, jaką ma w tym commicie. Zapisz przez ⌘S: Wyrm przepisuje ten commit i robi rebase jego potomków na niego.
  • Usuń z tej rewizji… usuwa plik tylko z tego commita; późniejsze commity przechodzą rebase.

Panel plików ma te same dwie akcje.

  • Zmień kolejność (R, przy zaznaczonych co najmniej dwóch commitach): przeciągnij je w żądanej kolejności i kliknij Zastosuj kolejność.
  • Przeciągnij i upuść: przeciągnij commit na inny, aby wybrać Rebase tutaj, na linię między dwoma commitami, aby wybrać Wstaw tutaj, albo na merge, aby dodać go jako rodzica.
  • Rebase na inny commit: zaznacz commit, kliknij prawym przyciskiem commit docelowy i wybierz Rebase … na ….
  • Przywróć z rodzica, Duplikuj, Wycofaj (revert) i Porzuć… są w tym samym menu kontekstowym. Więcej dodaje Zmień rodziców…, Uprość rodziców, Przywróć z… i pozostałe warianty.

Jeśli przepisanie wywoła konflikt, jj zapisuje go w commicie, zamiast Cię zatrzymywać. Zobacz Rozwiązywanie konfliktów.