Lekcja w wersji wideo

Czym jest Git?

Git jest narzędziem, dzięki któremu możemy kontrolować zmiany w plikach, nad którymi pracujemy. Tego typu narzędzie nazywamy Systemem Kontroli Wersji i jest wiele różnych programów, które to potrafią (np. SVN, Mercurial), nie mniej Git jest najpopularniejszy wśród nich wszystkich.

Jak wygląda to w praktyce?

Załóżmy, że mamy jakiś plik, na przykład z kodem. Podpinamy go pod narzędzie Git i zapisujemy w Git jego wersję. Gdy coś zmienimy w tym pliku, standardowo w systemie Windows zostanie on nadpisany, ale nie w Gicie!

Mając plik podpięty pod Git, gdy uznamy, że czas zapisać kolejną wersję możemy to zrobić bez obawy utraty stanu w jakim był plik, gdy poprzednio go zapisaliśmy w Gicie. Dodatkowo w każdej chwili możemy porównać obecny stan z dowolnym z poprzednich i zobaczyć co się zmieniło. Oczywiście najlepiej działa to dla plików tekstowych, gdzie możemy sprawdzić nawet najdrobniejsze zmiany jak na poniższym przykładzie:

Porównania, np. zapisanych fotografii w formacie jpg, już tak łatwo nie zrobimy (nie mniej możemy wyświetlić zapisane wersje fotografii i porównać je samodzielnie) 🙂

Czyli podsumowując, Git pozwala nam na zapisywanie, nazywanie oraz porównywanie wersji naszych plików.

Można zwizualizować to tak:
Na obrazku poniżej pokazujemy zmiany w pliku a.txt gdzie jego zawartość była zmieniana od Text 1 do Text 3:

Folder w Git

Gdy podpinamy pod Gita pojedynczy plik lub cały projekt, który zawiera wiele plików, wtedy takie miejsce nazywamy repozytorium. Jest to taka przestrzeń, w której zawierają się wszystkie pliki, które chcemy wersjonować – dokładnie tak jak folder w systemie Windows. Zazwyczaj nasze repozytorium dotyczy grupy plików, które tworzą razem strukturę. Najczęściej jest to projekt, nad którym chcemy pracować.

Na osi czasu praca nad repozytorim zawierającym projekt (folder) o nazwie Project x mogłaby wyglądać tak (możesz sobie wyobrazić, że w plikach zmienia się tekst i zapisujemy stan tych zmian, jednocześnie mając dostęp do poprzednich wersji):

Zapisanie każdej zmiany pod osobną wersją daje nam możliwość powrotu do stanu projektu z danego miejsca w czasie. Oczywiście zależ to od tego jak często będziemy te wersje zapisywać.

Możemy mieć wiele repozytoriów na naszym komputerze i niezależnie je utrzymywać. Dzięki temu można używać Git nie tylko do śledzenia zmian w projekcie np. informatycznym, ale i dowolnych grup plików których historia jest dla na istotna.

Git w chmurze

Prawdziwa mocą Gita jest to, że możemy połączyć nasze lokalne repozytorium z zewnętrznym serwisem internetowym, gdzie będzie ono przechowywane. Takie repozytorium na zewnętrznym serwerze nazywamy zdalnym repozytorium. Hmm nic nadzwyczajnego – prawie każdy z nas wrzucił jakiś plik na internetowy dysk. Jest jednak coś odmiennego w repozytorium Git współdzielonym w chmurze.

Tego typu repozytorium może być pobrane i edytowane na dowolnej maszynie. Jeśli dana maszyna posiada zainstalowanego Gita i uprawnienia do projektu to istnieje możliwość pobrania zdalnego repozytorium, dokonania modyfikacji oraz wysyłania do tego repozytorium kolejnych wersji projektu. Wizualizując:

Krótko opisując co się tutaj stało:

  1. Użytkownik posiada projekt i jest on dodany do lokalnego repozytorium Git na komputerze A. To lokalne repozytorium zostaje dodane do platformy wspierającej Git w sieci, np: gitlab.com. Czyli zostało utworzone zdalne repozytorium
  2. Następnie inny użytkownik na komputerze B pobiera projekt ze zdalnego repozytorium.
  3. Po dokonaniu zmian w lokalnym repozytorium z komputera B zmiany są wysyłane do zdalnego repozytorium.
  4. Użytkownik na maszynie A pobiera zmiany z zdalnego repozytorium.
  5. Po dokonaniu zmian publikuje je do zdalnego repozytorium.
  6. Użytkownik na komputerze B pobiera zmiany z zdalnego repozytorium.

Podsumowanie wprowadzenia

Taka praca nad projektem ma sens – możemy współdzielić pliki i dodawać do nich treści bez kłopotliwego wysyłania ich mailami czy komunikatorami. Cały projekt jest dostępny ze zdalnego repozytorium, więc jak tylko ktoś będzie chciał kontynuować pracę na nowej maszynie to może spokojnie pobrać najnowszą (ostatnio zsynchronizowaną) wersję projektu.

Możesz zapytać:

Co się stanie jak na obu maszynach zajdą zmiany i użytkownicy razem będą chcieli je wysłać do zewnętrznego repozytorium?

Tester od razu znajdzie miejsce aby zepsuć pięknie pokazany proces 😉 Używanie Git, oprócz mnóstwa funkcji, które pomagają rozwiązywać tego typu konflikt, to także zestaw dobrych praktyk, które zabezpieczają przed takimi sytuacjami. Podstawowe z nich omówimy w obecnym kursie.

Działamy!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *