Jaka jest różnica między git stash
a git commit
?
Git to jedno z najpopularniejszych narzędzi do kontroli wersji, które jest szeroko stosowane w zespołach programistycznych na całym świecie. Wśród licznych funkcji Gita, dwie z nich często powodują zamieszanie wśród początkujących programistów: git stash
i git commit
. W tym artykule szczegółowo omówimy różnice między tymi poleceniami, ich zastosowanie oraz przypadki, w których jedno może być lepszym wyborem od drugiego.
Podstawowe pojęcia: git stash
i git commit
Aby w pełni zrozumieć różnicę między git stash
a git commit
, najpierw wyjaśnijmy, czym są te komendy i do czego służą.
Co to jest git stash
?
Polecenie git stash
pozwala tymczasowo zapisać zmiany w bieżącym stanie roboczym bez ich zatwierdzania (commitowania). Jest to przydatne w sytuacjach, gdy musisz przerwać pracę nad jednym zadaniem, ale chcesz wrócić do niego później bez utraty postępu.
W wyniku użycia git stash
zmiany są przechowywane w specjalnej “półce” (stash), a katalog roboczy zostaje przywrócony do stanu czystego. Przykład użycia:
git stash
Aby przywrócić zmiany zapisane w stashu, używamy polecenia:
git stash pop
Co to jest git commit
?
Z kolei git commit
służy do trwałego zapisania zmian w lokalnym repozytorium. Zatwierdzenie zmian za pomocą git commit
oznacza, że są one gotowe do dzielenia się z innymi członkami zespołu (po wypchnięciu ich do zdalnego repozytorium).
Podstawowy przykład użycia:
git commit -m "Opis zmian"
Polecenie to tworzy migawkę bieżącego stanu kodu, co pozwala łatwo wrócić do niego w przyszłości.
Kluczowe różnice między git stash
a git commit
Choć git stash
i git commit
mogą wydawać się podobne, ich zastosowanie i cel są zupełnie inne. Oto główne różnice:
-
Czasowość vs. trwałość:
git stash
zapisuje zmiany tymczasowo, bez zapisywania ich jako części historii projektu.git commit
natomiast trwałe zapisuje zmiany w historii repozytorium. -
Historia repozytorium:
Zmiany zapisane przez
git stash
nie pojawią się w historii commitów. Natomiastgit commit
tworzy nowy punkt w historii. -
Udostępnianie zmian:
Zmiany zapisane przy użyciu
git stash
nie mogą być udostępniane innym użytkownikom, chyba że zostaną przywrócone i zatwierdzone. Zmiany zatwierdzone za pomocągit commit
mogą być wypchnięte do zdalnego repozytorium. -
Stan roboczy:
git stash
czyści katalog roboczy, przywracając go do stanu czystego.git commit
pozostawia katalog roboczy w obecnym stanie (chyba że użyto opcji--amend
).
Przykłady zastosowania
Rzućmy okiem na konkretne sytuacje, w których lepiej jest użyć jednego z tych poleceń.
Kiedy używać git stash
?
git stash
jest idealny w następujących scenariuszach:
- Musisz szybko przełączyć się na inną gałąź bez zatwierdzania nieukończonych zmian.
- Chcesz odrzucić zmiany, ale zachować je na wszelki wypadek.
- Pracujesz nad wieloma zadaniami równocześnie i potrzebujesz “odłożyć na bok” część pracy.
Kiedy używać git commit
?
Używaj git commit
w przypadkach, gdy:
- Zmiany są gotowe do zapisania w historii projektu.
- Chcesz udostępnić zmiany innym członkom zespołu.
- Wprowadzone zmiany są spójne i opisują zakończony etap pracy.
Najczęstsze błędy i jak ich unikać
Podczas korzystania z git stash
i git commit
możesz natknąć się na pewne problemy. Oto najczęstsze z nich i jak sobie z nimi radzić:
Problem z odnalezieniem zmian zapisanych w stashu
Jeśli zapomniałeś, co zostało zapisane w stashu, możesz użyć:
git stash list
Polecenie to wyświetli listę wszystkich zapisanych zmian.
Zatwierdzenie niekompletnych zmian
Przed użyciem git commit
upewnij się, że wszystkie istotne zmiany zostały dodane do indeksu za pomocą:
git add .
Przypadkowe nadpisanie zmian
Przywracając zmiany ze stasha, możesz przypadkowo nadpisać bieżące zmiany. Aby tego uniknąć, najpierw upewnij się, że katalog roboczy jest czysty.
Podsumowanie
Podsumowując, git stash
i git commit
mają różne zastosowania i są przeznaczone do różnych scenariuszy. git stash
jest doskonałym narzędziem do tymczasowego przechowywania zmian, gdy potrzebujesz przerwy w pracy. Z kolei git commit
pozwala na trwałe zapisanie zmian w historii projektu i dzielenie się nimi z zespołem.
Znając różnice między tymi dwoma poleceniami, możesz efektywnie zarządzać swoimi zmianami w Git, unikając typowych błędów i zachowując porządek w swoim repozytorium.