17. Usuwanie zatwierdzenia z gałęzi

Cele

  • Aby dowiedzieć się, jak usunąć najnowsze zatwierdzenia gałęzi

Revert to potężne polecenie z poprzedniej sekcji, które pozwala anulować wszelkie zatwierdzenia do repozytorium. Jednak zarówno oryginalne, jak i anulowane zatwierdzenia są widoczne w historii gałęzi (używając polecenia git log).

Często po wykonaniu zatwierdzenia zdajemy sobie sprawę, że to pomyłka. Byłoby miło mieć polecenie cofnij, które pozwala na natychmiastowe usunięcie nieprawidłowych zatwierdzeń. To polecenie zapobiegłoby pojawieniu się jednego lub więcej niechcianych zatwierdzeń w historii git log.

01 Polecenie resetowania

Użyliśmy już polecenia reset, aby dopasować strefę bufora i wybrane zatwierdzenie (zatwierdzenie HEAD zostało użyte w poprzedniej lekcji).

Gdy podane jest odwołanie do zatwierdzenia (np. gałąź, skrót lub nazwa znacznika), reset polecenie …

  1. Zastąpi bieżącą gałąź, aby wskazywała na poprawne zatwierdzenie
  2. Opcjonalnie zresetuje strefę buforową, aby była zgodna z określonym zatwierdzeniem
  3. Opcjonalnie zresetuj katalog roboczy, aby pasował do podanego zatwierdzenia

02 Sprawdź naszą historię

Zróbmy szybkie przejrzenie naszej historii zmian .

Uruchom:

git hist

Wynik:

Widzimy, że ostatnie dwa zatwierdzenia w tej gałęzi to „Ups ”i„ Cofnij Ups ”. Usuńmy je za pomocą polecenia reset.

03 Oznacz najpierw tę gałąź

Zaznaczmy ostatnie zatwierdzenie tag, so you can find it after removing a commit(s).

Uruchom:

git tag oops

04 Zresetuj zatwierdzenie do poprzedniego Ups

W w dzienniku historii powyżej, zatwierdzenie oznaczone jako „v1” znajduje się przed zatwierdzeniami „Ups” i „Revert Oops”. Zresetujmy gałąź do tego punktu. Ponieważ gałąź ma tag, możemy użyć nazwy tagu w poleceniu reset (jeśli nie ma tagu, możemy użyć wartości hash).

Uruchom:

git reset --hard v1git hist

Wynik:

Nasza gałąź główna wskazuje na zatwierdzenie v1, a zatwierdzenia „Revert Oops” i „Uops” już nie istnieją w gałęzi. Parametr --hard sprawia, że katalog roboczy odzwierciedla nową nagłówek gałęzi.

05 Nic nie jest stracone

Co się stało z niewłaściwymi zatwierdzeniami? Nadal są w repozytorium. Właściwie nadal możemy się do nich odwoływać. Na początku lekcji utworzyliśmy znacznik „oops” dla anulowanego zatwierdzenia. Przyjrzyjmy się wszystkim zatwierdzeniom.

Uruchom:

git hist --all

Wynik:

Widzimy, że złe zatwierdzenia nie zniknęły. Nie są już wymienione w gałęzi głównej, ale nadal pozostają w repozytorium. Nadal byłyby w repozytorium, gdybyśmy ich nie otagowali, ale wtedy moglibyśmy odwoływać się do nich tylko za pomocą ich skrótów. Zatwierdzenia bez odwołań pozostają w repozytorium do czasu uruchomienia oprogramowania do usuwania elementów bezużytecznych przez system.

06 Resetowanie zagrożeń

Resetowanie lokalnych gałęzi jest zwykle nieszkodliwe. Konsekwencje każdego „wypadku” można cofnąć, używając odpowiedniego zatwierdzenia.

Jednak inni użytkownicy współużytkujący gałąź mogą być zdezorientowani, jeśli gałąź jest udostępniana w zdalnych repozytoriach.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *