Git

Git Pro V2 - źródło główne 'suchej wiedzy' (poza tym są świetne manuale i help wbudowany w gita)

Wprowadzenie

czym jest git:
Rozproszony system kontroli wersji

do czego służy:
Wersjonowanie plików opartych na tekście.

do czego nie służy (albo z czym sobie słabo radzi):
Nie wersjonować plików binarnych (zdjęć, pdf-ów, spriteów, pliów wykonywalnych).
Rozwiązanie - GIT LFS.

Instalacja - Konfiguracja - Stworzenie repozytorium

instalacja

konfiguracja

git init - tworzy nowe repozytorium gita

Co powinno się znaleźć w większości repozytoriów gita:

licencja - BARDZO WAŻNE JEŻELI REPOZYTORIUM MA BYĆ OPUBLIKOWANE

README

gitignore - nie jest niezbędne, ale ułatwia życie z gitem

Status - Add - Restore (--staged) - Commit - gitignore

git status

Stany w jakich może być pliki w gicie:

untracked

commited (unmodified)

modified

staged

git add - dodanie pliku do repozytorium/przestrzeni staged

git restore - przywrócenie pliku do wersji bez zmian

git commit - zatwierdzenie zmian w dodanych (staged) plikach

Strategie commitowania

jeden plik jeden commit

jeden feature jeden commit

Log - Tag - Diff

git log:

-graph --all

git diff - różnice pomiędzy plikami w poszczególnych commitach

git tag - możliwość opcjonalnego otagowania commitów ułatwiających późniejsze przeszukiwanie historii zmian

Remote - Push - Clone - Pull

git remote - zarządzanie zdalnymi kopiami repozytorium

git clone - klonowanie zdalnego repozytorium

git push - wysyłanie zmian do repozytorium

git pull - ściąganie zmian z zdalnego repozytorium

Branch - Checkout - Merge - Rebase

git branch - zarządzanie /odnogami/ w repozytorium

git checkout - zmiana aktualnego brancha

git merge - połączenie dwóch branchy

git rebase - ściągnięcie zmian (commitów) z jednego brancha do drugiego

Strategie branchowania: Branching Workflows

Konflikty

konflikty są nieuniknione!

powstają przy edycji tago samego pliku w równoważnych (równoległych w drzewie) commitach

Checkout - Reset

git comit --amend - nadpisanie/edycja ostatniego commita

git reset - opcja nuklearna

git checkout - możliwość przejścia do X-owego commitu z historii zmian

Stash

git stash - schowek