Git jest znany jako najpopularniejszy system kontroli wersji. Pojęcie kontroli wersji nabiera znaczenia, gdy mówimy o pracy zespołowej i współpracy. Na przykład, jeśli wielu pracowników pracuje nad jednym projektem, spójność danych jest głównym problemem, który należy rozwiązać. Nie można po prostu założyć, że zmiana dokonana przez jednego z pracowników zostanie automatycznie powiadomiona o wszystkich pozostałych pracownikach pracujących nad tym projektem. Powinien raczej istnieć odpowiedni mechanizm, dzięki któremu można zapewnić spójność danych.
Teraz, jeśli mówimy o oprogramowaniu lub systemie do kontroli wersji, to jak sama nazwa wskazuje, jego głównym zadaniem jest śledzenie historii wersji. Oznacza to, że wszystkie zmiany wprowadzone do konkretnego pliku będą traktowane jako oddzielne wersje tego pliku. Oprogramowanie lub system do kontroli wersji zasadniczo pozwoli Ci powrócić do starszej wersji w dowolnym momencie, zgodnie z Twoimi potrzebami. Poza tym system kontroli wersji, taki jak Git, zapewnia również, że zmiany wprowadzone do dowolnego pliku mają taką samą widoczność dla wszystkich użytkowników, którzy mają dostęp do tego pliku, aby nie mogli przypadkowo rozpocząć pracy na starszej wersji lub kopii tego pliku.
Tak jak każdy inny system kontroli wersji, Git również pozwala nam wykonywać pewne operacje na plikach, które na niego wgrywamy. Co więcej, w dowolnym momencie zapewnia również możliwość cofnięcia zmian wprowadzonych w określonym pliku poprzez jego zresetowanie. Dzisiaj staramy się wyjaśnić różnicę między operacjami „git reset” i „git reset -hard”.
Zrozumienie różnicy między „git reset” a „git reset -hard”
Zanim zrozumiemy różnicę między operacjami „git reset” i „git reset -hard”, musimy znać niektóre z najważniejszych terminologii używanych w tym systemie kontroli wersji. „Głowa” w Git jest zdefiniowana jako wskaźnik, którego zadaniem jest wskazanie ostatniego zatwierdzenia lub zmiany wprowadzonej w pliku. „Indeks” jest zdefiniowany jako zestaw wszystkich plików, które zostały niedawno zatwierdzone i mają zostać zatwierdzone w następnej kolejności. Wreszcie „Katalog roboczy” odnosi się do zestawu plików z całego systemu plików, na którym aktualnie pracujesz.
Po zapoznaniu się z tymi terminologiami będzie Ci teraz bardzo łatwo zrozumieć różnicę między operacjami „git reset” i „git reset -hard”. Jak już wspomnieliśmy, istnieje wiele opcji, które można wykonać na pliku przesłanym na Git, podobnie „git reset” jest zdefiniowany jako domyślna operacja, za pomocą której można cofnąć ostatni zatwierdzenie lub zmianę dokonaną w aktualny dokument. Teraz ta operacja ma pięć różnych opcji, a mianowicie: twarde, miękkie, połączone, zmieszane i zachowaj.
W zależności od opcji, którą wybrałeś lub użyłeś z poleceniem „git reset”, otrzymasz inny poziom „cofnij”. Operacja „git reset -hard” jest uważana za najbardziej efektywną operację, jeśli chcesz całkowicie pozbyć się ostatniego zatwierdzenia. Oznacza to, że gdy wykonasz tę operację, zmieni się nagłówek twojego pliku, i.mi., nie będzie już wskazywać na ostatnie zatwierdzenie. Nie tylko to, ale także usunie twój ostatni zatwierdzenie z twojego indeksu, a nawet zmieni twój bieżący katalog roboczy.
Z drugiej strony, jeśli użyjesz innej opcji z poleceniem „git reset”, takiej jak „miękkie”, to zrobienie tego zmieni tylko pozycję twojej głowy. Poza tym nie spowoduje to żadnych zmian w indeksie ani nie zmieni bieżącego katalogu roboczego. Krótko mówiąc, możemy powiedzieć, że „git reset” jest poleceniem, podczas gdy „git reset -hard” jest jego odmianą, która jest używana, gdy chcesz wymazać wszystkie ślady ostatniego zatwierdzenia.
Wniosek
Przechodząc przez to szczegółowe wyjaśnienie operacji „git reset” i „git reset -hard”, od teraz z łatwością będziesz w stanie je odróżnić. W tym artykule dowiesz się również, której opcji należy użyć z poleceniem „git reset” w zależności od konkretnych wymagań.