Na codzień pracuję z IntelliJ IDEA. W tym IDE bardzo podoba mi się funkcja „szufladkowania zmian” podczas pracy z kontrolą wersji. Na codzień korzystam z Subversion i zdarza mi się z tej funkcji skorzystać. Na czym ona polega? Otóż, zdaża się, że pracujemy nad sporym kawałkiem kodu i już dość dużo zmian poczyniliśmy, gdy nagle dostrzeżemy błąd w aplikacji, który chcielibyśmy zmienić, zanim skommitujemy resztę zmian. Powyższa funkcja IntelliJ IDEA pozwala nam na odłożenie dotychczasowej pracy (czyli zmian od ostatniego commita) do szufladki – po czym, możemy poprawić błąd, scommitować zmiany i następnie z szufladki „wyjąć” kod, który napisaliśmy aby kontynuować pracę.
Wielce mnie ucieszyło, gdy zobaczyłem podczas pracy z GIT, że ma on taką funkcję wbudowaną out-of-the-box. Nazywa się ona ‚Stash’.
Wykonuje ona operację dokładnie tak jak opisałem powyżej, czyli…
- Pracując z dłuższym kawałkiem kodu, mamy już sporo zmian, gdy dostrzegamy błąd aplikacji, który natychmiastowo powinniśmy poprawić.
- Wykonujemy komendę
1 2 3 |
> git stash save "nazwa stasha" |
Wykonanie tej operacji zachowa nasze dotychczasowe zmiany gdzieś na boku, a master tree przywróci do stanu HEAD.
- Możemy poprawić nasz błąd i wykonać commit
1 2 3 |
> git commit -a -m "bugfix #2382 |
- Przywracamy stan poprzedni, aby kontynuować pracę:
1 2 3 |
> git stash pop |
co jednocześnie usunie naszą „szufladkę”, jeżeli nie chcemy usuwać aby móc do tego stanu jeszcze wrócić wykonujemy komendę :
1 2 |
> git stash apply |
- Kontynuujemy pracę.
Git Stash ma więcej możliwości, bo takich wirtualnych szufladek możemy tworzyć dowolną ilość i przywracać stan z każdej z nich. Możemy zatem poprogramować w stylu „co by było gdyby…” i wybrać najbardziej odpowiednią wersję napisanego kodu (dotyczy to zwłaszcza młodych programistów, którzy niejednokrotnie nie są pewni podejmowanych decyzji w programowaniu).
Młody czy stary programista – polecam GIT i funkcję stash.