Blog IT, Blog Marketing

Gdy pomylisz się w Gicie

Gdy pomylisz się w Gicie

Marcin Sarna , 11.08.2021 r.

Prawie zawsze możesz wyjść z tego obronną ręką.

Wszyscy to kiedyś zrobiliśmy (żeby raz…) — usunęliśmy plik, którego nie powinniśmy usuwać, scaliliśmy rzeczy, które nie powinny znajdować się w głównej gałęzi, przypadkowo wyrzuciliśmy poufne informacje z pliku konfiguracyjnego, daliśmy commit do niewłaściwej gałęzi…

Git jest naprawdę fajny gdy wszystko idzie zgodnie z planem — ale trochę trudniej jest programistom pałać do niego sympatią gdy trzeba cofnąć popełniony błąd. Po części dlatego, że GIT to tylko i aż kontrola wersji. Chodzi o to, że nie powinno się wprowadzać zmian w przeszłości, po zatwierdzeniu zmiany. Ale zawsze można coś na to poradzić i o tym jest ten wpis.

Odrzuć wszystkie lokalne zmiany w określonym pliku

Zapisałeś coś, ale przypadkowo uwzględniłeś również zmiany w pliku, którego nie chcesz dołączyć. Co robisz? Użyj następującego polecenia: git checkout HEAD targetfilename.js.

Jak przywrócić usunięty plik w Git

Usunąłeś plik w Git, ale chcesz go odzyskać. Oto jak to robisz: git checkout HEAD accidentallydeletedfilename.js

Jak odrzucić linie w pliku?

Są części kodu, które chcesz zachować ale inne części chcesz odrzucić. Jedno jest pewne — nie chcesz przywracać całego pliku do pierwotnego stanu. Możesz do tego użyć łatki. Oto jak możesz to zrobić: git checkout -p index.js, gdzie -p oznacza łatę. Możesz także wykonać to z użyciem —patch zamiast -p. To polecenie przeniesie nas w tryb interaktywny, w którym Git sprawdzi każdy fragment zmian, które zaszły w pliku. Możesz wybrać, który blok zmian chcesz zachować lub odrzucić. Możesz odrzucić zmianę, wpisując y lub zaakceptować ją wciskając n.

Odrzucenie wszystkich lokalnych zmian

Po prostu chcesz mieć czysty start w obecnej gałęzi, w której się znajdujesz. No to użyj następującego polecenia aby to osiągnąć: git reset --hard HEAD.

Jak cofnąć zatwierdzenie

Chcesz cofnąć commit bez usuwania zmian jakie się w międzyczasie zdarzyły. Załóżmy, że mamy takie commity: C1 --> C2 --> C3 . W tym przykładzie masz więc trzy różne commity. Chcesz cofnąć zmianę dokonaną w C2 bez usuwania C3. Najpierw użyj git log, aby wyświetlić poprzednie zmiany. To da ci git hash. Użyj tego git hasha jako punktu odniesienia, do którego commita chcesz cofnąć zmiany: git revert 9130cf1. Git utworzy teraz nowy commit, które cofnie zmiany wprowadzone przez ten konkretny commit.

Kod źródłowy

Jak zrobić roll back i reset do starszego commita

Załóżmy, że zrobiłeś coś, czego nie powinieneś, a teraz chcesz przywrócić swój git commit do starszej wersji. Oznacza to, że ustawiamy nasz wskaźnik na poprzedni commit. Oznacza to również, że wszelkie commity, które pojawią się później, znikną — tak jakby nigdy się nie pojawiły w naszej historii zatwierdzeń.

Aby to zrobić, przejdź do swojego git log i pobierz hash commita, do którego chcesz „się” zresetować. Następnie: git reset --hard 13928jj3ef i oczywiście git commit. Flaga —hard zapewnia, że po tej akcji żadne lokalne zmiany nie zostaną zachowane i pozostaniemy tylko z plikami, które zostały zapisane w danym momencie.

Jak odzyskać usunięte commity

Zrobiłeś reset i straciłeś kilka commitów, za którymi usilnie tęsknisz... Istnieje narzędzie o nazwie reflog — śledzi wszystko, co się dzieje, w tym usunięcia. Śledzi takie rzeczy, jak checkouty, commity, cherry-picks czy właśnie resety. Reflog wylistuje nam te działania w porządku chronologicznym. No to teraz cofamy usunięcie, np. tak: git reset --hard 01428ej2ee.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej