Wprowadzenie do systemu kontroli wersji Git

Wojciech 'vifon' Siewierski

Zarządzanie wersjami bez systemu kontroli wersji

  • my_project/
    • file.c
    • header.h
    • Makefile
  • my_project.zip
  • my_project_prawie_działa.zip
  • my_project_final.zip
  • my_project_final2.zip
  • my_project_oddany.zip

Zarządzanie wersjami z Gitem

  • my_project/
    • .git/
    • file.c
    • header.h
    • Makefile

Ćwiczenie praktyczne:

  • git add
  • git commit
  • git log
sample_repo

Co nam daje commit?

  1. Kiedy dodano zmianę.
  2. Kto dodał zmianę.
  3. Dlaczego dodano zmianę!

Zrobiliśmy błąd! Co teraz?!

git commit --amend
amended_repo_before
amended_repo_after_incorrect amended_repo_after_correct

Repozytorium jako graf

  • Commit jako węzeł grafu.
  • Relacje commitów jako krawędzie.
  • Gałęzie i tagi jako interesujące nas punkty w grafie!
  • Graf nigdy nie ulega zmianie! Dochodzą jedynie węzły oraz przemieszczamy się przy użyciu gałęzi. Nie istnieją* operacje destrukcyjne.
git reflog jako "historia przeglądarki", dziennik wykonanych operacji oraz anioł-stróż.

Poruszanie się po grafie repozytorium

  • git checkout przenosi nas na inną gałąź.
  • git reset przenosi całą aktualną gałąź do innego punktu grafu. Commity nie ulegają zmianom, jedynie commit, na jaki gałąź wskazuje.

    Można tak wycofywać lokalne zmiany (choć są bardziej wyrafinowane sposoby).

Dziękuję za uwagę!

Wojciech 'vifon' Siewierski

https://einval.eu/

https://github.com/vifon