Programowanie I C / C++
laboratorium 14 — git
Jarosław Piersa
Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika
2013-05-22
strona projektu http://git-scm.com/
repozytorium projektów publicznych https://github.com/
inne systemy: subversion, mercurial...
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 14
Cykl użycia (wersja scentralizowana)
tworzenie projektu wprowadzenie zmian przeglądanie statusu / logu potwierdzanie zmian (commit) publikowanie
rozwiązywanie konfliktów pobieranie nowej wersji
Tworzenie repozytorium
git i n i t - - b a r e tylko jeden raz
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 14
Skopiowanie projektu z repozytorium
git c l o n e l o g i n @ h o s t :~/ p r o j e k t . git / ./ r o b o c z y tylko jeden raz
Dodane plików / dopisanie funkcjonalności
poza gitem:
vim p r o g r a m . c
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 14
Przegląd zmian
zmiany
git s t a t u s
dodanie zmienionych plików git add p r o g r a m . c git rm s t a r y _ p l i k . c
git mv p o p r z e d n i . c a k t u a l n y . c
Potwierdzenie zmian (lokalne)
zmiany
git c o m m i t - m " K r o t k i o p i s z m i a n "
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 14
Potwierdzenie zmian (publiczne)
wypchnięcie do repozytorium git p u s h
lub
git p u s h l o g i n @ h o s t :~/ p r o j e k t . git /
Pobranie zmian
pobranie zmian (być może wprowadzone przez inną osobę) git p u l l
lub
git p u l l l o g i n @ h o s t :~/ p r o j e k t . git /
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 14
Log
historia commitów git log - - o n e l i n e graf commitów
git log - - g r a p h
Diff
zmiany w plikach git d i f f
git d i f f p l i k
git d i f f a 1 b 2 c 3 d 4 e 5 p l i k
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 14
merge
W sytuacji gdy powstały dwie odnogi wersja bez konfliktu
git f e t c h git m e r g e git c o m m i t
merge
W sytuacji gdy powstały dwie odnogi wersja bez konfliktu
git f e t c h git m e r g e punkt niewykonalny!
trzeba ręcznie usunąć konflikty (git diff będzie pomocny) git d i f f p l i k . c
vi p l i k . c
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 14
merge
usuwamy konflikty git d i f f p l i k . c vi p l i k . c
po rozwiązaniu wszystkich konfliktów:
git m e r g e k l u c z _ c o m m i t a git c o m m i t
git p u s h
Położenie repozytorium
(stan na 2013-05) git w systemie komputerowym WMiI: sxterm i aleks-2
VPN do sieci wydziałowej w przypadku pracy z zewnątrz serwis hostujący repozytoria (publiczne za darmo, prywatne są płatne) https://github.com/
podręcznik: E. Sink Version Control by Example http://www.ericsink.com/vcbe/
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 14