====== Git ====== [[https://git-scm.com/book/en/v2|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 * [[https://git-scm.com/book/en/v2/Getting-Started-Installing-Git|instalacja]] * [[https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup|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 \\ {{zajecia:npr_2019_2:lifecycle.png?600}} * 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: [[https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows|Branching Workflows]] \\ {{zajecia:npr_2019_2:branches.png?600}} - 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