Podstawy gita i githuba

Git to open-sourcowy rozproszony system kontroli wersji, stworzony przez Linusa Torvaldsa jako narzędzie wspomagające rozwój jądra systemu Linux. Instalacja na Linuxie wymaga zainstalowania głównie git-core. W Fedorze wystarczy wydać w konsoli polecenie

yum install git-core git-gui git-doc
a w mandrivie lub magei
urpmi git-core git-gui git-doc
Na Windowsie wystarczy pobrać i zainstalować najnowszą wersję msgita. Aby pracować z gitem należy otworzyć terminal (Linux), uruchomić Git bash (Windows).

Podstawowa konfiguracja

Każdy commit powinien zawierać informację kto jest jego właścicielem. Skonfigurujmy teraz gita w ten sposób aby każdy zrobiony przez nas commit jednoznacznie nas identyfikował. Poniższe komendy ustawiają nasze imię i email.
git config --global user.name "Twoje imię"  
git config --global user.email "twoj_email"  
Jeśli chcesz sprawdzić bieżące ustawienia wydaj polecenie
git config --list
Można skonfigurować domyślny edytor tekstu, który zostanie uruchomiony, gdy git będzie wymagał wprowadzenia jakiejś informacji tekstowej. Domyślnie git skorzysta z domyślnego edytora systemowego.
git config --global core.editor kwrite
Istnieje możliwość wyświetlenia pomocy na temat określonego polecenia git np. poniżej wyświetlimy pomoc dla polecenia commit.
git commit --help
Rozpoczniemy teraz właściwą pracę z git. Utwórz gdzieś na swoim dysku katalog z projektem np. projekt1git. Przejdź do niego w konsoli (służy do tego polecenie cd). Na Windowsie możesz kliknąć prawym przyciskiem myszy na tym katalogu i z menu wybrać Git bash, wtedy odrazu znajdziesz się w tym katalogu. Jeśli chcesz rozpocząć śledzenie zmian w plikach projektu musisz wykonać polecenie
git init
Git w katalogu Twojego projektu utworzy katalog .git zawierający tzw. szkielet repozytorium gita. Pewnie zauważyłeś po ścieżce do katalogu z projektem słowo master. Oznacza ono gałąź, z którą aktualnie pracujemy. Utwórzmy jakieś pliki w folderze projektu. Ja utworzyłam plik index.html, katalog css z plikiem styl.css oraz katalog js z plikiem skrypt.js. Napiszmy w konsoli
git status
Pozwala ona zobaczyć aktualny status projektu tzn. jakie pliki zostały dodane, zmodyfikowane itp. Patrz rysunek poniżej. Poleceniem add możesz wybrać pojedyncze pliki, które chcesz śledzić. Można podać również sciżkę do katalogu. Zostaną dodane wtedy wszystkie pliki z tego katalogu i podkatalogów.
git add index.html
Istnieją trzy specyficzne polecenia add (dodaj do poczekalni).
  • git add -A dodaje wszystkie pliki
  • git add . dodaje nowe i zmodyfikowane pliki (bez usuniętych)
  • git add -u dodaje zmodyfikowane lub usunięte pliki (bez nowych)
Zmiany w plikach, które dodaliśmy zatwierdzamy poleceniem commit. Parametr m służy do podawania komentarza do commita (commity zwyczajowo powinny mieć komentarz).
git commit -m "pierwszy commit"
Można również zatwierdzać pliki z pominięciem poczekalni. Służy do tego poniższe polecenie
git commit -am "modyfikacja pliku index" 
Git automatycznie doda do poczekalni (stage) i zatwierdzi wszystkie zmodyfikowane pliki (nie doda nowych plików). Jeśli zmodyfikowaliśmy jakiś plik i chcemy cofnąć zmiany do ostatniego commita musimy wydać poniższe polecenie. Zadziała ono również dla usuniętego niepotrzebnie pliku (zostanie przywrócony).
git checkout index.html
Przejdziemy teraz do omówienia gałęzi (branch). Rozgałęzienie oznacza odbicie od głównego pnia linii rozwoju i kontynuację pracy bez wprowadzania tam bałaganu. Oznacza to, że tworzymy odgałęzienie projektu. Domyślną gałęzią jest master. Po wydaniu polecenia
git branch
git zwróci nam słowo master, ponieważ posiadamy tylko jedną domyślną gałąź. Utworzymy teraz nową gałąź o nazwie nowa.
git branch nowa
Aby przełączyć się na nową gałąź należy wykonać komendę
git checkout nowa
Od tej pory wszelkie zmiany plików i commity będą dotyczyły gałęzi nowa. Wprowadźmy teraz trochę zmian w plikach, dodajmy jakieś nowe i zatwierdźmy zmiany. Spójrzmy na nasz katalog z projektem (jakie pliki tam są i jak wyglądają). Teraz przełączmy się z powrotem na gałąź master.
git checkout master
Spójrz teraz ponownie na katalog z projektem. Wygląda on tak samo jak przed zmianą gałęzi na nowa. Zmiany z gałęzi nowa nie zostały uwzględnione w gałęzi master. Jeśli stwierdzimy, że chcemy połączyć obie gałęzie musimy wydać następujące polecenie.
git merge nowa
Łączymy nim gałąź nowa z gałęzią master, w której aktualnie się znajdujemy. Gałąź usuwamy poleceniem
git branch -d nowa
Jeśli chcemy zobaczyć historię commitów musimy wydać następujące polecenie
git log
Będzie ona wyglądała podobnie do poniższej. Każda informacja o commicie zawiera: autora, datę, hash commita i komentarz do niego. Aby usunąć plik z gita, należy go najpierw wyrzucić ze zbioru plików śledzonych, a następnie zatwierdzić zmiany. Służy do tego polecenie git rm, które dodatkowo usuwa plik z katalogu roboczego. Nie zobaczymy go już zatem w sekcji plików nieśledzonych przy następnej okazji.
git rm nazwa_pliku
Do tej pory nasze działania dotyczyły tylko lokalnego repozytorium. Zajmiemy się teraz pracą ze zdalnym repozytorium. Wykorzystamy do tego celu serwis github. Wchodzimy zatem na githuba i klikamy na link w menu Pricing nad signup. Z dostępnych opcji wybieramy Create free account. Wprowadzamy potrzebne dane czyli login, email i hasło. Teraz musimy dodać do naszego konta klucz ssh, aby móc się łączyć z githubem. Jeśli go nie posiadamy musimy go wygenerować. Służy do tego poniższe polecenie. Możemy zmienić domyślne położenie pliku z kluczem oraz podać do niego hasło (lub kliknąć Enter pozostawiając klucz bezhasłowy).
ssh-keygen -t rsa -C "[email protected]"
Gdy już mamy wygenerowany klucz przechodzimy w menu do Account Settings, wybieramy z lewego menu SSH Public Keys, następnie Add another public key. Wprowadzamy jakiś tytuł klucza i w pole tekstowe wklejamy nasz klucz czyli zawartość pliku id_rsa.pub. Teraz można już połączyć się z githuenm przez ssh.
ssh -T [email protected]
Zostaniesz poproszony o podanie hasła do klucza (jeśli takowe zostało utworzone). Możesz teraz sklonować jakieś publiczne repozytorium np. jQuery.
git clone git://github.com/jquery/jquery.git 
Przejdziemy teraz do tworzenia własnego repozytorium na githubie. Kliknij na Dashboard, a następnie New Repository w prawym dolnym rogu. Github stworzy publiczny link do klonowania Twojego repozytorium dla wszystkich i prywatny dla Ciebie. Wpisujemy nazwę projektu i opcjonalnie jego opis i url. Teraz będąc w katalogu naszego projektu wydajemy następujące polecenie
git remote add origin [email protected]:twojlogin/nazwa_repo.git   
Nasz projekt zna teraz swoją zdalną lokalizację. Musimy jeszcze wysłać pliki na githuba (nasze zdalne repozytorium). Służy do tego polecenie push.
git push -u origin master 
Jeśli współpracujesz z innymi osobami, które robią zmiany na zdalnym repozytorium to poleceniem
git pull 
możesz pobrać zmiany ze zdalnego repozytorium do siebie. Przydatne linki:
ebook o gicie
pomoc githuba