Git to system kontroli wersji, który obsługuje repozytoria. Możesz sobie skopiować dane repozytorium do dowolnej lokalizacji (np. Internet, inny dysk lub katalog) tyle razy, ile tylko zechcesz. Ktoś zapyta po co to?
Załóżmy dwa przypadki:
1. Pracujesz w firmie nad oprogramowaniem dla klienta, które oczywiście nie może wyciec poza Wasz zespół. Macie w biurze swoją lokalną sieć. Na dysku jednego komputera tworzycie główne repozytorium (tzw. surowe). Ty i Twoi koledzy klonujecie to repozytorium na swoje komputery i tworzycie lokalne repozytoria. Każdy z Was ma teraz identyczne kopie. Dodatkowo synchronizujecie każde lokalne repozytorium z głównym, abyście mogli wysyłać i pobierać zmiany z głównego repo (push/pull). Ty piszesz kawałek kodu, grafik robi ikonki, ktoś tam jeszcze refaktoryzuje (ulepsza, optymalizuje) kod. Robicie to równocześnie. Po skończonej pracy każdy z Was wysyła kod do głównego repozytorium, a następnie ściągacie sobie wysłane przez kolegów poprawki. W ten sposób na koniec dnia macie jednakowe, ulepszone projekty, pomimo że każdy z Was pracował nad inną częścią.
Oczywiście git daje większe możliwości, bo w przeciwnym razie to by się wiązało tylko ze zwykłym kopiowaniem plików na główny serwer. Git udostępnia gałęzie albo wykrywa kolizje i próbuje je rozwiązać (np. jakbyś Ty i kolega poprawiał dokładnie ten sam kod danego dnia). Ponadto w łatwy sposób możesz sobie podejrzeć jakie zmiany były dodane pomiędzy poszczególnymi commitami.
2. Pracujesz sam. Twoje zdalne repozytorium jest umieszczone w sieci, a nie na dysku innego komputera. W takim razie świetnie się do tego nadaje Github, który jest miejscem przechowującym surowe repozytoria. Poprzez synchronizację lokalnego repo z repozytorium z Githuba możesz sobie wysyłać swoje poprawki. Co z tego masz? Podstawą jest forma backupu. Jak Ci padnie dysk w komputerze, to masz jeszcze pliki w repozytorium na Githubie. Ponadto możesz pojechać w odwiedziny do kolegi za granicę (bez komputera). Rozwinie się rozmowa na temat programowania. Wchodzisz na Githuba i pokazujesz mu, co do tej pory zrobiłeś. Mało tego, on możesz sobie sklonować Twoje repozytorium i dodać swoje poprawki. No i oczywiście masz całą masę narzędzi, które daje Ci git.
Jak więc widzisz, Github to tylko dodatek do gita. Commity możesz dodawać z linii komend (CLI), jak i z poziomu przeglądarki (wykorzystując serwis Github). Ja z początku tak robiłem, ale gdy chciałem dodać cały folder do projektu, to okazało się, że do niego wchodziłem i musiałem wybrać pojedynczy plik. Przesiadłem się więc na linię komend. Zresztą porządny programista będzie korzystał z CLI, a nie z graficznego interfejsu. Po prostu daje on więcej możliwości, np. można go oskryptować.