Poradniki > Instalacja i pierwsze kroki z Git

Instalacja i pierwsze kroki z Git

Opublikowany: 16 stycznia 2020

Development Git Ubuntu

Git jest rozproszonym systemem kontroli wersji, wydanym w 2005 roku jako narzędzie wspomagające rozwój kernela Linux poprzez umożliwienie koordynacji pracy pomiędzy programistami. Dziś Git jest jednym z najpopularniejszych systemów kontroli wersji na świecie.

Git może być używany z poziomu interfejsu linii komend i pozwala na śledzenie zmian w dowolnych zbiorach danych. Zaletami oprogramowania Git są wysoka szybkość pracy, integralność danych oraz wsparcie przepływu pracy. Dzięki Git każdy folder z danymi na dowolnym urządzeniu jest prawdziwym “repozytorium” z możliwością śledzenia oraz historią wprowadzanych zmian.

Niniejszy poradnik przedstawi instrukcję instalacji oraz korzystania z Git na głównych dystrybucjach Linux, a przede wszystkim Ubuntu 18.04.

W pierwszej kolejności połącz się z serwerem za pomocą połączenia SSH. Jeśli jeszcze tego nie zrobiłeś, zapoznaj się z naszym poradnikiem na temat bezpiecznego połączenia przez protokół SSH. W przypadku serwera lokalnego przejdź do następnego kroku i otwórz terminal na swoim serwerze.

Instalacja Git

Zaktualizuj repozytorium dystrybucji i rozpocznij instalację poprzez apt-get:

$ apt-get update && apt-get install git

Git zostanie zainstalowany. Zweryfikuj poprawność instalacji oraz wersji oprogramowania za pomocą argumentu „--version”:

$ git –-version

Następnie rozpocznij korzystanie z Git, skonfiguruj dane użytkownika (nazwę oraz adres e-mail), które poprzez opcję „--global” będą powiązane z każdym utworzonym pakietem:

$ git config --global user.name "Name Surname"
$ git config --global user.email "username@domain.com"

W pozostałej części artykułu skupimy się na cechach oprogramowania, dokładnie przedstawiając każdą komendę. Wszystkie cechy zostały przetestowane na systemie Ubuntu, ale instrukcja jest aktualna dla każdej dystrybucji Linux.

Inicjalizacja przestrzeni roboczej

Głównym celem korzystania z Git jest zachęcenie współpracowników do kooperacji na wielu poziomach przepływu pracy przy danym projekcie. Pierwszym krokiem jest inicjalizacja przestrzeni roboczej, czyli stworzenie pustego lokalnego repozytorium lub dostęp do zdalnego repozytorium.

Tworzenie lub reinicjalizacja repozytorium odbywa się za pomocą komendy "init":

$ git init

Powyższa komenda tworzy folder ‘.git’, który będzie zawierał wszelkie niezbędne dla repozytorium pliki do śledzenia projektu. Wszystkie nowe pliki standardowo nie będą śledzone. Oznacza to, iż nie będą brane pod uwagę w czasie ładowania snapshota.
Śledzenie plików można uruchomić za pomocą komendy ‘add’, po której następuje komenda „commit” wraz z krótkim opisem zawartości:

$ git add <FilePath/FileName>
$ git commit -m ‘<Description>’

Rys. 1 przedstawia przykład inicjalizacji nowego repozytorium oraz dodania pliku ‘FileTestA’, jak również odpowiedź z serwera z potwierdzeniem wykonania operacji.

 New Git Repository

Rys. 1 – Przykład inicjalizacji i śledzenia w Git na Ubuntu Terminal 18.04

Jeśli chcesz mieć udział w już istniejącym “repozytorium”, skorzystaj z komendy „clone”. Git pobierze kopię wszystkich wersji plików danego projektu, obecnych na wskazanym serwerze:

$ git clone <URL> <Destination_Folder>

W polu wprowadź adres, z którego ma zostać pobrana paczka. Natomiast zamiast wskaż ścieżkę do zapisania pobranych plików. Jeśli nie wprowadzisz żadnej wartości, pliki zostaną zapisane w folderze głównym.

Jeśli chodzi o adres URL, Git może wykorzystać różne protokoły do pobrania repozytorium:

Protokół Git (git: //);

Protokół HTTP (http: // lub https: //);

Protokół SSH (ssh: //);

Użytkownik i Serwer (username @ server: /path.git).

Zapisywanie i wprowadzanie zmian do poczekalni

Pliki w projekcie mogą mieć następujące statusy: ‘untracked’, ‘tracked’, ‘unmodified’ i ‘modified’. Jak wcześniej wspomnieliśmy, pliki w statusie ‘untracked’ nie są zawarte w snapshocie (przy tworzeniu nowego „repozytorium”).
Przy klonowaniu istniejącego „repozytorium” wszystkie pliki standardowo posiadają status "tracked". Mogą one jednak również posiadać status ‘unmodified’, co oznacza, że nie były modyfikowane po pobraniu, lub ‘modified’, jeśli zostały wykonane zmiany od czasu ostatniego zatwierdzenia.

Status pliku można sprawdzić za pomocą komendy ‘status’:

$ git status

Poniższy screen przedstawia zrzut ekranu terminalu, w którym został zainicjalizowany nowy projekt, został dodany nowy plik i przeprowadzono pierwsze zatwierdzenie zmian. Poprzez komendę „status” terminal potwierdza brak zmodyfikowanych plików do aktualizacji. Poniżej zielonej linii, po modyfikacji pliku ponownie jest wywoływana komenda ‘status’.

 Git Status

Rys. 2 – Przykład Inicjalizacji, Śledzenia oraz Edycji pliku Git na Ubuntu Terminal 18.04

Zmodyfikowany plik pojawia się teraz pod nagłówkiem „Changes not staged for commit”, co oznacza, iż śledzony plik został zmodyfikowany, ale nie został jeszcze przesłany do poczekalni.

W tym momencie mamy dwie możliwości:

  • Zaktualizować plik w poczekalni (poprzez powtórzenie procedury śledzenia, czyli wykonanie komendy ‘git add’);

  • Odrzucić zmiany (za pomocą komendy „git checkout ”).

Przyjmijmy, że chcemy wgrać zmodyfikowany plik do poczekalni za pomocą komendy ‘git add’ i ponownie sprawdzić status poprzez komendę ‘git status’.

Git Workflow

Rys. 3 – Wgranie edytowanych plików do poczekalni na Ubuntu Terminal 18.04

W tym momencie plik będzie zmodyfikowany i gotowy do zatwierdzenia zmian. (zielony prostokąt na rysunku 3). Jeśli przed zatwierdzeniem zmian wykonane zostaną dalsze modyfikacje pliku, sprawdzenie jego statusu spowoduje otrzymanie odpowiedzi o statusie ‘ready-to-commit’, gdyż plik nie znajduje się jeszcze w poczekalni (czerwony prostokąt na rysunku 3).
Spowodowane jest to faktem, iż pliki w poczekalni są tymi, które nie były modyfikowane (zostaną one zatwierdzone po wykonaniu komendy „commit”), a przykładowy plik został ponownie edytowany. W celu zatwierdzenia ostatnich zmian należy go ponownie dodać (niebieski prostokąt na rysunku 3).

Ignorowanie plików

Jeśli nie chcesz, aby poszczególne pliki, takie jak logi, zostały automatycznie dodane stwórz plik ".gitignore", który będzie zawierał ignorowane pliki.

Aby automatycznie ignorować całe foldery można skorzystać ze znaków specjalnych, ustalając wzorce. Wprowadzić można następujące wzorce:

  • Puste linie lub linie zaczynające się od "#" są automatycznie ignorowane;
  • "/" może zostać wykorzystany do wskazania podfolderu;
  • “!” odrzuca dany wzór;
  • Skorzystanie z wzorów Glob.

Wzorzec glob jest syntaksem wykorzystywanym do reprezentowania zestawu stringów. Najpopularniejszymi są:

  • gwiazdka (*) wskazujący na dowolny string (często wykorzystywany do zaznaczania wszystkich plików o danym rozszerzeniu);
  • znak zapytania (?) wskazuje na dowolny znak oraz nawiasy kwadratowe ([…]) w celu sprecyzowania rzędu znaków lub cyfr.

Zatwierdzanie zmian

Pliki wprowadzone do poczekalni (za pomocą komendy „git add”) mogą zostać zatwierdzone. Zatwierdzanie zmian jest powoduje zachowanie snapshota zapisanego w Twojej poczekalni.

Wszystko co nie znajduje się w poczekalni nie zostanie zatwierdzone, ale pozostanie w zmodyfikowanym stanie w lokalnym folderze.

Najprostszym sposobem na zatwierdzenie zmian jest wykonanie komendy:

$ git commit

Zostanie otwarty edytor tekstu, zawierający ostatnią odpowiedź komendy statusu ‘git’. Pierwsza linia będzie pusta, gdyż można w niej wprowadzić wiadomość, informującą o wykonanych zmianach.

Właśnie wprowadziłeś swoje pierwsze zmiany! Na koniec przedstawimy instrukcje usuwania oraz modyfikowania plików.

Usuwanie plików

W celu usunięcia pliku Git nie wystarczy usunąć go ze śledzonych zmian. Należy również powtórzyć proces zatwierdzania zmian, aby zapisać zmiany. Usunięcie pliku z folderu spowoduje wyrzucenie go z poczekalni.

Wykonanie komendy ‘git rm’ wraz z wskazaniem ścieżki oraz nazwy pliku spowoduje wprowadzenie procesu usunięcia do poczekalni. Przy kolejnym zatwierdzeniu zmian plik zostanie usunięty:

$ git rm <File>

Jeśli plik został wcześniej zmodyfikowany i wprowadzony do poczekalni, możesz wymusić jego usunięcie dodając „-f”:

$ git rm -f <File>

Jeśli chcesz natomiast usunąć plik przypadkowo wstawiony do poczekalni, ale chcesz zachować go na dysku, skorzystaj z opcji „--cached”:

$ git rm --cached <File>

Przenoszenie i zmiana nazwy plików

Kolejnym procesem jest przenoszenie i zmiana nazwy plików. Nie jest to operacja automatyczna, gdyż Git nie śledzi zmian w lokalizacji plików. Metadane nie są generowane w celu śledzenia zmian opcji „rename”.

Operacja może zostać wykonana za pomocą wcześniej poznanych komend, poprzez zmianę nazwy i usunięcie „poprzedniego” pliku (git rm), a następnie dodaniu „nowego” pliku (git add).

Aby uniknąć wykonywania serii komend przy każdej zmianie nazwy lub przeniesieniu pliku, można skorzystać ze specjalnej komendy Git „git mv”, która natychmiast powoduje taki sam rezultat jak wymienione wcześniej trzy komendy.

Kompletny syntaks znajduje się poniżej:

$ git mv <OldPath/OldName> <NewPath/NewName>

Komenda powyżej powoduje taki sam efekt jak następujące trzy komendy:

$ mv <OldPath/OldName> <NewPath/NewName>

$ git rm <OldPath/OldName>

$ git add <NewPath/NewName>

Nazwa pliku zostanie zmieniona, lub zostanie on przeniesiony i pojawi się od razu w poczekalni gotowy do zatwierdzenia. Zweryfikuj powodzenie operacji za pomocą komendy ‘git status’, która wyświetli sekcję ‘renamed’ na liście zmian do zatwierdzenia, na której będą widoczne wszelkie pliki o zmienionej nazwie lub lokalizacji. Dla każdego pliku sprecyzuj poprzednią oraz obecną nazwę lub ścieżkę.