Praktyczny kurs GIT dla zielonych cz. 2 – Najważniejsze komendy

Pierwsze repozytorium lokalne

 

Tworzenie repozytorium lokalnego

Repozytorium lokalne „od 0” tworzy się jedną komendą. Wystarczy otworzyć terminal w katalogu, w którym przechowujemy/będziemy przechowywać kod i wklepać:

I tyle. Nasze repozytorium nie zawiera jeszcze plików. Następnym krokiem jest więc dodanie plików do lokalnego repozytorium czyli commit opisany w dalszej części kursu.

Tworzenie repozytorium lokalnego z już istniejącego zdalnego

 

Jeśli masz dostęp do już istniejącego repozytorium zdalnego, wystarczy wejść do katalogu w którym będziemy przechowywać nasze repozytorium zdalne i wpisać komendę:

Za adres repozytorium podstawiamy adres http lub ssh, np. git@github.com:kamranahmedse/design-patterns-for-humans.git dla projektu design-patterns-for-humans. Zarówno inicjalizację nowego repozytorium lokalnego, lub klonowanie już istniejącego repozytorium zdalnego na nasz komputer wykonujemy jednorazowo!

Wykonywanie commitów

Czym jest commit, a czym stage?

Commit w Gicie jest to najprościej mówiąc konkretna porcja zmian wraz z informacją, kto dany commit wykonał. Commit ma też zapisany w sobie stan projektu, ponieważ każdy commit „pamięta” wszystkie poprzednie commity. Dodawanie porcji zmian (zmiany w plikach, usuwanie plików, dodawanie nowych plików), jest 2-stopniowe. Commitowane pliki muszą wcześniej znaleźć się w stage‚u.

Stage jest to pośredni etap w commitowaniu plików. Do stage’a zatem dodajemy wyłącznie pliki, które chcemy dalej commitować. Jego celem jest umożliwienie nam wyboru które konkretnie pliki chcemy zamieścić w commicie. Bez stage’a wszystkie pliki/zmiany w projekcie byłyby dodawane automatycznie.

Dodawanie plików do stage’a.

Załóżmy że mamy czyste, świeżo zainicjalizowane repozytorium, oraz kilka plików (test1.txt, minion.jpg, README.md), które chcemy dodać do repozytorium.

Użyjmy komendy git status która wyświetli nam aktualny stan repozytorium w branchu, w którym się znajdujemy:

Jak widzimy, nasze 3 pliki są oznaczone jako untracked. Oznacza to że nasze repozytorium nie zna tych plików. Możemy je dodać do stage’a na 2 sposoby.

Pierwszy sposób to wybieranie plik po pliku wszystkie pliki, które potem będziemy chcieli dodać do repozytorium. Wygląda to następująco:

Innym sposobem jest dodanie wszystkich plików w katalogu za pomocą komendy:

Uwaga: z dodawaniem wszystkich możliwych plików w projekcie do stage’a trzeba być ostrożnym żeby nie scommitować czegoś, czego byśmy nie chcieli (np. plik konfiguracyjny z hasłami).

Commitowanie zmian ze stage’a

Kiedy już wybraliśmy, które pliki chcemy scommitować do repozytorium, a wybrane przez nas pliki są już w stage’u, pozostaje nam wykonać tylko sam commit. Wykonuje się go następującą komendą:

Tym sposobem commit ze zmianami został zapisany w naszym lokalnym repozytorium. Na potwierdzenie tych słów możemy wyświetlić sobie log commitów za pomocą komendy git log.

git-log-first-commit

Synchronizacja lokalnego repozytorium ze zdalnym

a) w przypadku pierwszego połączenia/akcji z repozytorium zdalnym:

Jeśli nasze repozytorium lokalne jest utworzone za pomocą git clone, należy przejść do punktu b. Natomiast, jeśli nasze repozytorium zdalne jest jeszcze puste i wykonujemy pierwszą synchronizację, musimy jednorazowo ustawić naszemu lokalnemu repozytorium adres zdalnego repozytorium. Robimy to za pomocą:

W moim przypadku było to:

Następnie przechodzimy do punktu b.

b) w przypadku kiedy już łączyliśmy się z repozytorium zdalnym

Adres naszego repozytorium zdalnego znajduje się już w pamięci repozytorium lokalnego, prawdopodobnie pod nazwą origin. Aby zsynchronizować repozytorium zdalne ze zmianami na repozytorium lokalnym należy „pchnąć” nasze commity za pomocą komendy:

Co to jest branch, można przeczytać poniżej. Jeśli nie przełączałeś się na inne gałęzie repozytorium, zapewne znajdujesz się w gałęzi master. W takim przypadku twoja komenda będzie miała postać:

 

Jeśli natomiast chcemy pobrać (pociągnąć) zmiany z repozytorium zdalnego do naszego lokalnego repozytorium, wklepujemy komendę:

W moim przypadku nie było żadnych nowych zmian w repozytorium zdalnym względem lokalnego, dlatego dostałem informację że mój branch jest aktualny: