Jaka jest różnica między git stash a git clean?

Praca z systemem kontroli wersji Git może być wyzwaniem, zwłaszcza dla osób, które dopiero zaczynają swoją przygodę z tym narzędziem. Dwa z poleceń, które często budzą wątpliwości, to git stash i git clean. Chociaż oba mogą być używane do zarządzania stanem repozytorium, mają różne zastosowania i działają w odmienny sposób. W tym artykule szczegółowo omówimy różnice między tymi dwoma poleceniami, aby pomóc Ci lepiej zrozumieć ich funkcjonalności.

Co to jest git stash?

git stash to polecenie używane w sytuacjach, gdy potrzebujesz tymczasowo zapisać zmiany w swoim kodzie, aby móc przełączyć się na inne zadanie lub gałąź (branch). Jest to przydatne, gdy masz lokalne zmiany, które nie są jeszcze gotowe do zatwierdzenia (commit), ale jednocześnie chcesz, aby Twój obszar roboczy (working directory) był czysty.

Jak działa git stash?

Polecenie git stash zapisuje bieżący stan Twojego obszaru roboczego (working directory) i indeksu (staging area) na stosie (stash stack), a następnie przywraca je do stanu czystego (zgodnego z ostatnim zatwierdzeniem).

git stash

Po wykonaniu tego polecenia Twoje zmiany są przechowywane w pamięci podręcznej (stash), ale nie są widoczne w obszarze roboczym. Możesz później przywrócić te zmiany za pomocą polecenia:

git stash apply

Jeśli chcesz usunąć zapisane zmiany po ich zastosowaniu, możesz użyć polecenia:

git stash pop

Przykład użycia git stash

  1. Masz lokalne zmiany w plikach, np. file1.txt i file2.txt.
  2. Chcesz przełączyć się na inną gałąź, ale nie chcesz jeszcze zatwierdzać tych zmian.
  3. Używasz git stash, aby tymczasowo zapisać swoje zmiany.
  4. Po powrocie do swojej gałęzi przywracasz zmiany za pomocą git stash apply.

Co to jest git clean?

git clean to polecenie służące do usuwania nieśledzonych plików z Twojego obszaru roboczego. Jest to przydatne, gdy chcesz oczyścić repozytorium z plików tymczasowych, które nie są śledzone przez Git, takich jak pliki logów, kompilacji czy inne generowane pliki.

Jak działa git clean?

Polecenie git clean usuwa pliki, które nie są obecne w historii Twojego repozytorium i które nie są śledzone przez Git. Przykład użycia:

git clean -f

Flaga -f oznacza “force”, czyli wymuszenie wykonania operacji. Domyślnie Git nie wykonuje tego polecenia bez tej flagi, aby zapobiec przypadkowemu usunięciu plików.

Jeśli chcesz także usunąć nieśledzone katalogi, możesz użyć flagi -d:

git clean -fd

Przykład użycia git clean

  1. W swoim katalogu projektu masz pliki takie jak temp.log i katalog build/, które nie są śledzone przez Git.
  2. Używasz polecenia git clean -fd, aby usunąć te pliki i katalogi.
  3. Obszar roboczy staje się czysty, a nieśledzone pliki znikają.

Kluczowe różnice między git stash a git clean

Chociaż oba polecenia mają na celu zarządzanie stanem repozytorium, ich zastosowania są zupełnie różne:

Cecha git stash git clean
Cel Tymczasowe zapisanie lokalnych zmian Usunięcie nieśledzonych plików
Zakres działania Zmiany w obszarze roboczym i indeksie Nieśledzone pliki i katalogi
Przywracalność Zmiany można przywrócić za pomocą git stash apply Zmiany są nieodwracalne
Bezpieczeństwo Bezpieczne – nie usuwa danych Niebezpieczne – wymaga ostrożności

Kiedy używać git stash, a kiedy git clean?

Użyj git stash, gdy:

  • Masz lokalne zmiany, które chcesz tymczasowo zapisać.
  • Potrzebujesz przełączyć się na inną gałąź bez zatwierdzania zmian.
  • Chcesz szybko wrócić do swojej pracy po wykonaniu innego zadania.

Użyj git clean, gdy:

  • Chcesz usunąć nieśledzone pliki, które zaśmiecają Twój katalog projektu.
  • Potrzebujesz czystego stanu obszaru roboczego przed wykonaniem nowych operacji.
  • Jesteś pewny, że pliki te nie są już potrzebne.

Podsumowanie

Zarówno git stash, jak i git clean są potężnymi narzędziami w arsenale użytkownika Gita, ale należy ich używać w różnych kontekstach. git stash jest idealny do tymczasowego przechowywania lokalnych zmian, które mogą być przywrócone później. Z kolei git clean służy do usuwania nieśledzonych plików, których już nie potrzebujesz.

Znajomość różnic między tymi poleceniami oraz świadomość ich zastosowań pomoże Ci lepiej zarządzać swoim repozytorium i pracować efektywniej z Gitem. Pamiętaj jednak, aby używać ich z rozwagą – szczególnie w przypadku git clean, ponieważ usunięte pliki nie mogą być odzyskane.