System kontroli wersji
oraz związany z nim workflow
System kontroli wersji
Version Control System (VCS)
Repozytorium
Paweł
lokalny
WADY
Jakub
Prawie zerowa możliwość współpracy w drużynie
Paweł
Paweł
Jakub
scentralizowany
Repozytorium
zdalne (remote)
WADY
Bardzo niska odporność na awarie zdalnego serwera
Brak dostępu do historii zmian offline
Paweł
Jakub
Rozproszony
zdalne (remote)
Repozytorium
Repozytorium
Repozytorium
Workflow
Development
kodzenie...
Pull request
Code review
Merge
GIT
Instalacja (Ubuntu)
$ sudo apt-get install git
Wstępna konfiguracja
$ git config --global user.name "Imię Nazwisko"
$ git config --global user.email email
# opcjonalnie
$ git config --global core.editor subl
# wypisanie ustawień
$ git config --list
Utworzenie repozytorium
$ cd
$ mkdir git_pypila
$ cd git_pypila
$ git init
Dodanie pliku do
$ touch git.py
$ echo "print 'Test'" > git.py
$ git add git.py
commita
Wyświetlenie aktualnego stanu plików
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: git.py
zmian (plików)
$ git commit -m "My first git commit!"
[master (root-commit) a798687] My first git commit!
1 file changed, 1 insertion(+)
create mode 100644 git.py
Commit
Historia zmian
$ git log
commit a7986878d0d059b242e1de3e2c9bfde6b7c70e33
Author: Artur Grochowski <artur.grochowski@stxnext.com>
Date: Mon Feb 16 00:14:48 2015 +0100
My first git commit!
Dodawanie zdalnego repozytorium
$ git remote add origin link_do_zdalnego_repozytorium
Pushowanie
# git push <remote> <branch>
$ git push origin master
zmian
Clonowanie
# usuwamy folder
$ cd
$ rm -rf git_pypila
# git clone <link>
$ git clone link_do_zdalnego_repo
repozytorium
branchy
# git branch <nazwa_brancha>
$ git branch hello-world
$ git branch witaj-swiecie
Tworzenie
master
hello-world
witaj-swiecie
brancha
# git checkout <nazwa_brancha>
$ git checkout hello-world
Zmiana aktualnego
(git status aby zobaczyć na jakim branchu jesteśmy)
$ echo "print 'Hello world'" > git.py
$ git add git.py
Edytujemy plik git.py
Następnie commitujemy i pushujemy tego brancha tak samo jak poprzednio, tj.
$ git commit -m "Some changes!"
$ git push origin hello-world
Tworzymy
pull requesta
na gitlabie
Files > create merge request
Tworzymy podobnego pull requesta dla brancha witaj-swiecie, pamiętając aby zmienić, scommitować i spushować zmiany w pliku git.py (tak aby wypisywany był tekst "Witaj świecie")
Mergujemy jeden z pull requestów na gitlabie i patrzymy co się stanie z drugim :).
Powinny pojawić się konflikty. W celu ich rozwiązania musimy przełączyć się na branch gdzie się one znajdują i go zaaktualizować
Pobieranie (fetchowanie)
# git fetch <remote> <branch>
$ git fetch origin master
zmian
Mergowanie
# git merge <branch>
$ git merge origin/master
zmian
$ git pull origin master
Protip
dwa poprzednie kroki (fetch oraz merge) można wykonać jedną komendą:
Rozwiązujemy konflikty
Przełączamy się na brancha na którym mamy konflikt
aktualizujemy nasz branch o zmiany z mastera
decydujemy którą część kodu zostawić a którą usunąć manualnie
Ponownie commitujemy i wypychamy nasze zmiany
Dziękuję za uwagę
VCS - 2016
By Artur Grochowski
VCS - 2016
- 1,029