Repozytorium Git
Repozytorium Git – repozytorium kodu. Dzięki niemu możemy w wygodny sposób pracować nad własnymi skryptami, kodami aplikacji, bez żadnego strachu że wprowadzimy błędną zmianę i nie będziemy mogli wrócić do wersji przed zmianami. Git zachowuje całą historię zmian kodu. Znacznie ułatwia pracę nie tylko programistą, ale również administratorom przechowującym własne skrypty do zarządzania serwerami. Poniżej dowiesz się do czego używane są takie polecenia jak git commit, git merge, git add, git push, git log, itp.
Git posiada 3 stany:
- Zatwierdzony oznacza, że dane zostały bezpiecznie zachowane w Twojej lokalnej bazie danych. Używamy polecenia „git commit„.
- Zmodyfikowany oznacza, że plik został zmieniony, ale zmiany nie zostały wprowadzone do bazy danych.
- Śledzony – oznacza, że zmodyfikowany plik został przeznaczony do zatwierdzenia w bieżącej postaci w następnej operacji commit. Używamy polecenia „git add„
Podstawowa praca z repozytorium Git
Podstawowa praca z repozytorium Git wygląda podobnie do:
- Wykonujemy modyfikacje jakiegoś pliku w katalogu roboczym
- Oznaczamy zmodyfikowany plik w katalogu roboczym za pomocą polecenia git add
- Zatwierdzamy zmiany za pomocą polecenia git commit. Po wykonaniu tego procesu, zawartość plików zapisywana jest jako migawka projektu w katalogu Git.
Każdy plik w katalogu roboczym po sklonowaniu może znajdować się w dwóch stanach, śledzony lub nieśledzony.
- Śledzone pliki są to wszystkie pliki, które zostały dołączone do ostatniej migawki, mogą być to pliki niezmodyfikowane, zmodyfikowane lub oczekujące w poczekalni.
- Nieśledzone pliki to wszystkie pozostałe pliki, które nie znalazły się w ostatniej migawce i nie znajdują się w poczekalni.
Amazon Git – CodeCommit
Interesującą usługą w Amazonie jest CodeCommit. Usługa ta zapewni prywatne repozytorium kodu w chmurze Amazon i to całkowicie za darmo, oczywiście po spełnieniu kilku warunków. Jednym z najistotniejszych jest limit 5 użytkowników.
Dla wszystkich tych, którzy chcą zacząć zabawę z repozytorium kodu Git, możemy polecić tą usługę ze względu na niskie koszty (lub ich brak) i wysoką dostępność. Więcej informacji znajdziecie na stronie usługi: https://aws.amazon.com/codecommit/
Praca z repozytorium Git w konsoli Linux
Instalacja podstawowych narzędzi repozytorium GIT w systemie Linux
System CentOS / RedHat
yum install git
System Debian
apt-get install git
Uzyskiwanie pomocy Git
W celu uzyskania pomocy o wybranym poleceniu w konsoli Linux, należy skorzystać z jednego z poniższych poleceń:
git help POLECENIE git POLECENIE --help man git-POLECENIE
Podstawowa konfiguracja przed rozpoczęciem pracy z repozytorium Git
Identyfikacja użytkownika
Przed rozpoczęciem pracy należy ustawić informację o użytkowniku wprowadzającym zmiany w kodzie, takie jak Imię/Nazwisko oraz adres e-mail:
git config --global user.name "Imię Nazwisko" git config --global user.email "[email protected]"
Użycie parametru –global powoduje że dane będą używane we wszystkich repozytoriach z jakich korzystamy z obecnego użytkownika
Dane możemy zmienić również w głównym pliku konfiguracyjnym danego użytkownika:
~/.gitconfig
Możemy również ustawić parametry widoczne dla każdego użytkownika w danym systmie. Takie zmiany można wykonać dodając parametr –system zamiast –global lub zmienić je w pliku konfiguracyjnym
/etc/gitconfig
Jeśli chcemy wprowadzić zmiany tylko dla konkretnego repozytorium, nie należy podawać dodatkowych parametrów.
Pliki konfiguracyjny w katalogu .git/config bieżącego repozytorium, zawiera konfiguracje charakterystyczną dla tego konkretnego repozytorium. Każdy kolejny poziom zagnieżdżenia pliku ma priorytet wyższy niż poziom poprzedni.
Czyli konfiguracja umieszczona w katalogu repozytorium .git/config będzie przesłaniać konfigurację /etc/gitconfig
Na koniec warto sprawdzić obecne ustawienia wydając polecenie:
git config --list
Jeśli w wyniku powyższego polecenia wystąpią powtarzające się wartości, to GIT przyjmie tą ostatnią. Może tak się zdarzyć kiedy te same wartości zostaną podane w kilku plikach konfiguracyjnych.
Dla pewności zawsze możemy zobaczyć rzeczywistą zmienną jaka obecnie jest ustawiona, podając zmienną jako parametr dla „git config”
git config user.nam
Możemy również zmienić edytor tekstu wykorzystywane w git na nano za pomocą poniższego polecenia:
git config --global core.editor nano
Klonowanie repozytorium
Do klonowania repozytorium używamy polecenia „git clone” z adresem repozytorium.
Do sklonowania repozytorium z publicznie dostępnego źródło, wydajemy komendę:
git clone https://github.com/*.git
Przy klonowaniu z prywatnego repozytorium, musimy się uwierzytelnić za pomocą danych do logowania:
git clone [email protected]/home/repozytorium.git
Każde klonowanie repozytorium git tworzy katalog o takiej samej nazwie repozytorium. Jeśli chciałbyś sklonować repozytorium ale do innego katalogu, możesz podajć jego nazwię na końcu polecenia
git clone https://github.com/*.git nazwa_katalogu
Dodawanie i usuwanie z repozytorium GIT
Po pobraniu repozytorium git, możemy dodać lub usunąć jakieś pliki.
Aby dodać plik należy wykonać polecenie:
git add plik.txt
Natomiast aby dodać wszystkie niedodane plik należy uruchomić polecenie
git add .
Do usuwania plików z repozytorium git oraz dysku należy używać polecenia
git rm plik.txt
Natomiast jeśli chcemy usnąć tylko z repozytorium git, tak aby nie był już śledzony, a zachować ten plik na dysku, to należy wykonać polecenie:
git rm --cached plik.txt
Zmiana nazwy plików
Zmiana nazwy pliku przy pomocy narzędzia git:
git mv plik.txt plik2.txt
To polecenie jest równoważne poniższym poleceniom:
mv plik.txt plik2.txt git rm plik.txt git add plik2.txt
Wykonanie powyższych poleceń niestety nie jest wystarczające abyśmy zobaczyli te plik w naszym repozytorium. Aby zatwierdzić zmiany i zapamiętać migawkę z poczekalni, należy wykonać polecenie
git commit -am "Nasz komentarz odnośnie naszych zmian"
Jeśli do polecenia commit dodamy parametr –v, zostaną dodane dodatkowe komentarze w postaci wszystkich zmian z danej migawki.
Każde polecenie commit zapamiętuje każdą migawkę, którą można później odtworzyć lub porównać zmiany z inną migawką.
Jeśli do polecenia commit dodamy parametr -a, to wszystkie zmiany które nastąpiły w plikach i nie zostały dodane do poczekalni, również zostaną uwzględnione. Bez tego parametru zostaną uwzględnione zmiany tylko dodane do poczekalni za pomocą polecenia git add
Teraz możemy wysłać nasze zmiany bezpośrednio do repozytorium za pomocą komendy:
git push -u origin master
origin – jest naszym domyślnym aliasem do sklonowanego repozytorium
master – jest gałęzią naszego repozytorium do której przesyłamy zmiany.
Jeśli zostały wprowadzone jakieś zmiany w repozytorium i nie mamy ich lokalnie to należy wykonać polecenie:
git pull
Polecenie to pobierze wszystkie zmiany jakie zostały dokonane w repozytorium.
Ignorowanie plików wrzucanych do repozytorium
W głównym katalogu sklonowanego repozytorium istnieje plik .gitignore w którym możemy dodać ignorowane pliki. Pliki które mają być pomijane przy wrzucaniu do repozytorium. Jeśli nie ma takiego pliku, to należy go utworzyć.
Załóżmy że nie chcemy aby do naszego repozytorium były dołączane wszystkie pliki kończące się rozszerzeniem .log. Wtedy plik .gitignore będzie zawierał linie:
*.log
Porównywanie zmian w plikach zanim trafią do poczekalni a zostały zmienione
Kiedy po wykonaniu polecenia git status ten sam plik będzie widoczny w poczekalni a drugi nie, to możemy sprawdzić jakie zmiany zostały wykonane przed dodaniem do poczekalni(git add)
W tym celu należy wykonać polecenie
git diff
Możemy również sprawdzić jakie zmiany trafiły do poczekalni z istniejącym repozytorium. W tym celu dodajemy parametr –cached
git diff --cached
Historia zatwierdzonych zmian
Podstawowe polecenie do przejrzenia logów z ostatnich zmian to:
git log
Przy dodaniu parametru -p zobaczymy zmiany jakie zostały wykonane
git log -p
Dodając przykładowo parametr -2 możemy ograniczyć ilość wyświetlonych wpisów
git log -p -2
Po dodaniu parametru –stat zobaczymy ile plików zostało zmienionych, dodany, usuniętych
1 files changed, 1 insertions(+), 1 deletions(-)
Możemy również dodać parametr –pretty i skorzystać innego formatu wyświetlenia danych
git log --pretty=oneline git log --pretty=short git log --pretty=full git log --pretty=fuller git log --pretty=format:"%h - %an, %ar : %s"
Wyświetlenie danych z grafem w ASCII
git log --pretty=format:"%h %s" --graph
Tabela z opcjami dla format:
%H | Suma kontrolna zmiany |
%h | Skrócona suma kontrolna zmiany |
%T | Suma kontrolna drzewa |
%t | Skrócona suma kontrolna drzewa |
%P | Sumy kontrolne rodziców |
%p | Skrócone sumy kontrolne rodziców |
%an | Nazwisko autora |
%ae | Adres e-mail autora |
%ad | Data autora (format respektuje opcję -date=) |
%ar | Względna data autora |
%cn | Nazwisko zatwierdzającego zmiany |
%ce | Adres e-mail zatwierdzającego zmiany |
%cd | Data zatwierdzającego zmiany |
%cr | Data zatwierdzającego zmiany, względna |
%s | Temat |
Opcja | Opis |
Tabela z parametrami do opcji log:
-p | Pokaż pod każdą zmianą powiązaną łatkę |
–stat | Pokaż pod każdą zmianą statystyki zmodyfikowanych plików |
–shortstat | Pokaż wyłącznie zmienione/wstawione/usunięte linie z polecenia –stat |
–name-only | Pokaż pod każdą zmianą listę zmodyfikowanych plików |
–name-status | Pokaż listę plików o dodanych/zmodyfikowanych/usuniętych informacjach. |
–abbrev-commit | Pokaż tylko pierwsze kilka znaków (zamiast 40-tu) sumy kontrolnej SHA-1. |
–relative-date | Pokaż datę w formacie względnym (np. 2 tygodnie temu) |
–graph | Pokaż graf ASCII gałęzi oraz historię scaleń obok wyniku. |
–pretty | Pokaż zatwierdzone zmiany w poprawionym formacie. Dostępne opcje obejmują oneline, short, full, fuller oraz format (gdzie określa własny format) |
Opcja | Opis |
Lista zmian z ostatnich dwóch tygodni:
git log --since=2.weeks
Tworzenie repozytorium GIT w konsoli Linux
Do utworzenia repozytorium git, należy wykonać poniższe polecenie:
git init --bare /home/repozytorium.git
Możemy również przejść do wybranego katalogu i wykonać poniższe polecenie, które stworzy nowy podkatalog .git – szkielet GIT
git init
Przykład obsługi na sklonowanym już repozytorium i podglądanie stanu danego pliku
Załóżmy że chcemy dodać do repozytorium git plik „check_md_raid„.
Przed dodaniem pliku do katalogu i wykonaniu komendy git status otrzymamy wynik:
#git status # On branch master nothing to commit (working directory clean)
Natomiast jak już dodamy plik do katalogu i wydamy to samo polecenie git status otrzymamy wynik:
# git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # check_md_raid nothing added to commit but untracked files present (use "git add" to track)
W wyniku powyższego polecenia możemy zauważyć że plik nie jest jeszcze śledzony, ponieważ znajduje się z nagłówkiem „Nieśledzone pliki”
Żeby plik był śledzony musimy użyć polecenia git add
git add check_md_raid
#git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: check_md_raid
Możemy zobaczyć że plik został dodany do poczekalni, ponieważ znajduje się z nagłówkiem „Zmiany do zatwierdzenia” i od tej pory jest śledzony.
Jeśli w sklonowanym repozytorium istniały jakieś pliki i następnie je zmodyfikujemy, to przy uruchomieniu polecenia git status ujrzymy:
# git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: check_md_raid # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: check_smart
Aby dodać ten plik do poczekalni wydajemy polecenie:
git add check_smart
Po wydaniu polecenia git status ujrzymy:
# git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: check_md_raid # modified: check_smart
Podsumowanie
Omówione w tym artykule polecenia git, powinny być wystarczające do wykorzystania repozytorium kodu git w prostych projektach administracyjnych. Niestety artykuł ten jest dosyć długi, przez co nie został zamieszczony materiał o tworzeniu gałęzi w repozytorium oraz innych ciekawych możliwościach, o których możemy poczytać na stronie https://git-scm.com/. Jako że nie specjalizujemy się w programowaniu aplikacji a w zarządzaniu serwerami, repozytorium git okazało się strzałem w dziesiątkę przy tworzeniu, kolekcjonowaniu i ulepszaniu skryptów do administracji serwerami.