repozytorium git

Repozytorium GIT – podstawy, git commit

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 commitgit mergegit addgit pushgit 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

repozytorium git

Podstawowa praca z repozytorium Git

Podstawowa praca z repozytorium Git wygląda podobnie do:

  1. Wykonujemy modyfikacje jakiegoś pliku w katalogu roboczym
  2. Oznaczamy zmodyfikowany plik w katalogu roboczym za pomocą polecenia git add
  3. 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.