Poznaj swoje IDE – PHPStorm #2: Integracja Gita


Wstęp

PHPStorm, jako zintegrowane środowisko programistyczne, posiada sporo wbudowanych narzędzi, o których często nie słyszały nawet osoby o sporym doświadczeniu. Wśród nich jest wbudowany klient REST, czy integracja z systemem kontroli, o której będzie ten wpis. Skupię się na opisaniu integracji z Gitem, ponieważ najwięcej osób z niego korzysta. Oprócz Gita, PHPStorm obsługuje SVN, Mercurial, CVS, SVN oraz Perforce.

Co daje nam używanie gita w PHPStormie?

Podstawową korzyścią z używania integracji Gita w IDE to większa efektywność przy pracy z systemem kontroli wersji, dodatkowo nie musimy przełączać się pomiędzy osobnym terminalem i większość rzeczy możemy zrobić skrótami klawiszowymi. Dostajemy świetne narzędzie do rozwiązywania konfliktów, commitowania. Przejdźmy do praktyki.

Jak skonfigurować Gita?

Przy projekcie bez zainicjonowanego gita możemy zainicjinowanać go z poziomu IDE. Wystarczy w górnym menu wybrać VCS -> Enable Version Controll Integration.

git

W nowo otwartym oknie wybieramy Git.gitOd tego momentu mamy skonfigurowany system kontroli wersji.

Jak dodać zewnętrzny serwer do Gita?

Praca ze zdalnym repozytorium Gita to podstawa przy codziennych zadaniach programisty, możemy dodać repozytorium przez terminal, jak i przez PHPStorma. W tym celu z menu wybieramy VCS -> Git -> Remotes, otworzy nam się menadżer zdalnych repozytoriów.

git remotesgit remotes

Jak dodawać pliki do wersjonowanych plików?

Możemy ręcznie dodać pliki poprzez kliknięcie prawym klawiszem myszy na interesujący plik i wybranie Git -> Add lub skorzystać ze skróty klawiszowego: option + command + a.

git w phpstorm

Jednocześnie, podczas tworzenia nowego pliku, PHPStorm sam zapyta nas czy nie chcemy dodać pliku.

Commitowanie plików.

Przy commitowaniu mamy kilka opcji, w większości są  one do siebie podobne. Po wcześniejszym dodaniu pliku do wersjonowania wybieramy z górnego menu VCS -> Git -> Commit File, równocześnie możemy kliknąć prawym klawiszem i wybrać Git -> Commt File. Ostatnim, najlepszym według mnie sposobem jest skrót klawiszowy command + k.

Git commit PHPStorm

W nowo otwartym oknie, z najważniejszych funkcji mamy możliwość dodania kolejnych plików, dodania wiadomości do commita, sprawdzenia co dokładnie commitujemy.

Możemy puścić samego commita, bądź commita z pushem. Jeśli nie zrobimy pusha przy commicie, zawsze możemy go wywołać skrótem klawiszowym command + shift + k, bądź wybierając z menu VCS -> Git -> Push.

Przelączanie się pomiędzy branchami.

Przęłączać się pomiędzy branchami możemy z wysuwanego okna w prawym dolnym rogu, bądź z górnego menu VCS -> Git -> Branches

git

Annotate

Ciekawa funkcja, o której nie każdy wie, wykorzystywana do sprawdzenia kto edytował dane miejsce w kodzie. Najszybciej uruchomimy ją przez kliknięcie prawym klawiszem na numeracji lini, bądź VSC -> Git -> Annotate.

Annotate

PHPStorm Annotate

Dodatkowo, klikając na konkretny wpis uzyskujemy większe informacje o tym, jakie pliki zostały zmodyfikowane podczas danego commita oraz wiadomość przy commitowaniu.

Paths AffectedSprawdzenie aktualnej rewizji

Aby sprawdzić z jakiego commita pochodzi nasz plik, w którym obecnie się znajdujemy,  wybieramy z menu VCS -> Git -> Show current revision.

current revision

current revisionMetoda pomocna do sprawdzenia który ostatni commit sprawił jakiś problem i do którego miejsca np. musimy wycofać produkcję, jeśli bug nie jest szybko naprawialny, a nie chcemy cofać np. całego wydania.

Porównywanie z innym branchem

Historia lokalna

Posiadamy możliwość wersjonowania plików bez commitowania plików wraz z możliwością szybkiego przełączenia się pomiędzy różnymi wersjami. Przydatną funkcją jest ustawienie etykiety, dzięki której możemy rozpoznawać różne wersje. Aby to zrobić wystarczy z górnego menu wybrać VCS -> Local History -> Put Label, bądź analogicznie z prawego kliku.

put labelPut Label

Uruchomienie narzędzia porównującego wersje możemy wykonać z menu kontekstowego Local History -> Show History.

Show historyRozwiązywanie konfliktów

Najgorszą częścią przy pracy w projektach jest rozwiązywanie konfliktów, na szczęście, dzięki wbudowanemu narzędziu do konfliktów w PHPStormie, całość jest sporo łatwiejsza i szybsza. Gdy stworzy nam się jakiś konflikt podczas mergowania branchy, PHPStorm sam uruchomi okno z wyborem zmian. Jednak, gdy tak się nie stanie, ponieważ np zmergujemy z terminala, to uruchomimy VCS -> Git -> Resolve Conflicts z górnego menu.

Resolve conflictsZ tego miejsca już od razu możemy wybrać które zmiany chcemy zaakceptować, jednak jeśli chcemy się upewnić co dokładnie zostało zmienione,  to możemy przejść do konkretnego konfliktu klikając na niego.

Resolve conflictsW tym miejscu możemy akceptować konkretne strony, albo dopasować tak, aby wszystkie zmiany z dwóch branchy zostały wprowadzone do finalnego commita. Jest to bardzo przydatne w sytuacji, w której pracujemy dłużej nad jakimś zadaniem i zanim puścimy Merge Requesta, to ktoś już inny zmerguje swoje zaakceptowane zmiany do głównego brancha.

Revertowanie zmian

Sporym ułatwieniem codziennej pracy jest szybka możliwość revertowania zmian konkretnego pliku. Najczęściej z tego powinniśmy korzystać podczas okna commitowania używając skrótu option + command + z bądź wybierając z menu najeżdżając na plik.

Revert Changes

Revert ChangesTagowanie

Również z poziomu PHPStorma posiadamy możliwość tagowania wersji w repozytorium, co jest przydatne, jeśli chcemy zaznaczyć do którego miejsca mamy daną wersję aplikacji. Naturalnie uruchamiamy z górnego menu VCS -> Git -> Tag.

Tagowanie

TagowanieMergowanie dwóch branchy

Aby domergować zmiany z innego brancha do aktualnego, wystarczy z menu wyświetlającego aktualną wersję branch wybrać interesujący branch, który chcemy zmergować do aktualnego, i wybrać merge. Dzięki temu wszystkie zmiany zostaną zastosowane w aktualnym branchu.

git mergeSzczególnie przydatne, gdy chcemy zaaktualizować branch który czeka na Code Review w repozytorium.

Stashowanie

Jako programiści nie lubimy być odrywani od aktualnego zadania, nad którym pracujemy, jednak czasem się zdarza, że priorytety się zmieniają, i zamiast pracować nad nową funkcjonalnością musimy zająć się poprawką buga który występuję na produkcji. W takich przypadkach większości wpisujemy w terminal git stash i po skończonej pracy git stash pop, niestety, po pewnym czasie posiadamy spory bałagan z indexami stasha i nie wiemy który jest wersją prawidłową, w takich momentach przydatna jest funkcja stashowania w PHPStormie, aby ją uruchomić wybieramy z menu VCS -> Git -> Stash.

 git stash

Po wybraniu ukaże się nam pop up, w którym możemy wpisać wiadomość, która będzie nas informowała nad czym aktualnie pracowaliśmy.git stashJeśli chcemy przywrócić jakieś zmiany z do aktualnego brancha, wystarczy z menu wybrać VCS -> Git -> UnStash Changes.

UnStash ChangesW łatwy sposób możemy podejrzeć zmodyfikowane pliki wraz z modyfikacjami wewnątrz plików.

UnStash ChangesUnStash Changes

Możemy usuwać stashe.

UnStash Changes Drop

Git Reset HEAD

Jeśli chcemy cofnąć się o kilka commitów wstecz, wystarczy z menu wybrać VCS -> Git -> Reset HEAD.

Git Reset HEADDo wyboru mamy trzy opcje typu resetowania: Mixed, Soft, Hard.

Git Reset HEAD

Możemy sprawdzić, do którego commita będziemy się cofali przez opcje Validate, która pokaże wiadomość z danego commita oraz zmiany jakie zostały  w nim wprowadzone.

Git Reset HEADPodsumowanie

Jak widzimy PHPStorm (jak i reszta IDE od Jetbrains) posiada bardzo rozbudowane integracje z systemami kontroli wersji, a w szczególności z Gitem. Podsumowanie czy warto korzystać ze wszystkich dobrodziejstw jakie oferuje nam IDE w stosunku do terminala, zostawię do osobistego przemyślenia przez czytelników. Osobiście korzystam z większości funkcji zintegrowanych w IDE, ale czasem szybciej jest mi użyć terminala, nie zamykam się tylko na jedno rozwiązanie, wybieram te które lepiej sprawdzi się w danym momencie, a możliwość wyboru warto posiadać.


Leave a Reply