Git to system kontroli wersji, który stał się w praktyce standardem na rynku.
Podstawowe pojęcia
- SCM — to akronim od Source Code Management, czyli dosłownie kontrola kodu (w języku polskim funkcjonuje określenie system kontroli wersji); jest to system który pozwala na archiwizowanie i śledzenie zmian w kodzie, dzięki czemu możemy cofać się w historii lub podejrzeć, kto był autorem konkretnej zmiany
- Repozytorium — ‘kontener’ na określony zbiór kodu, najczęściej jeden projekt; repozytorium pozwala grupować kod i zmiany, dzięki czemu możemy przeglądać wszystkie zmiany wykonane w ramach jednego repozytorium, przyznawać uprawnienia do repozytoriów oraz pobierać / kopiować je
- Commit (lub rewizja) — jest to proces ‘wysłania’ na repozytorium określonych zmian w kodzie — jeśli pobierasz kod z repozytorium, następnie dokonujesz modyfikacji i wysyłasz te zmiany z powrotem do repozytorium, proces ten nosi nazwę commitowania, a same zmiany wysłane razem nazywamy commitem lub rewizją
- pull / push — odpowiednio pobranie i wysłanie zmian (jednego lub wielu commitów) z/do innego repozytorium
- diff — (ang. różnica) — jest to różnica pomiędzy różnymi rewizjami — dzięki temu możemy zobaczyć, które fragmenty uległy zmianie oraz w jaki sposób; pozwala to także zoptymalizować transfer danych pomiędzy repozytoriami
- fork — kopia repozytorium; szczególnie popularne w przypadku projektów open-source, dzięki czemu możemy skopiować cały projekt i rozwijać go niezależnie (np. dopasowując do naszych potrzeb)
- branch — odgałęzienie, wersja wewnątrz repozytorium; branche pozwalają na prace wielu osobom równocześnie, bez ciągłego wchodzenia sobie w drogę i nadpisywania zmian — każdy może pracować na swoim branchu, dopiero po zakończeniu pracy łącząc zmiany z innymi i rozwiązując problemy
- merge — połączenie wielu zmian z różnych źródeł, które może skutkować niekompatybilnymi zmianami wymagającymi ręcznych modyfikacji; merge pozwala łączyć prace wykonywane w różnych obszarach, które mogą się zazębiać, w jedną całość w sposób kontrolowany i świadomy
Przykłady.
Pierwszy commit:
1 2 3 4 5 6 |
git clone git@github.com:GIT_ACCOUNT_NAME/REPO_NAME.git git init git add . git commit -am "First commit" git remote add origin git@github.com:GIT_ACCOUNT_NAME/REPO_NAME.git git push origin master |
Drugi commit dla gałęzi master:
1 2 3 |
git status git commit -am "File X has been changed" git push origin master |
Drugi commit dla nowej gałęzi o nazwie np. production:
1 2 3 |
git status git commit -am "File Y has been changed" git push origin production |
Klonowanie na kliencie poraz pierwszy repozytorium:
1 |
git clone git@github.com:GIT_ACCOUNT_NAME/REPO_NAME.git |
Aktualizacja na kliencie po dokonaniu zmian w repozytorium.
1 |
git pull origin master |