Черная и белая магия Git (мастер-класс)

29
Черная и белая магия Git Application Developers Days 4 13 декабря 2013г Выговский Леонид vygovskiy.com НТЦ «Аргус» argustelecom.ru

Transcript of Черная и белая магия Git (мастер-класс)

Page 1: Черная и белая магия Git (мастер-класс)

Черная и белая магия Git

Application Developers Days 4 13 декабря 2013г

Выговский Леонидvygovskiy.com

НТЦ «Аргус» argustelecom.ru

Page 2: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 2 из 29

Git — система для богов?

Page 3: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 3 из 29

Фарфор и ...

http://legacy.edenspiekermann.com/projects/hering-web

Page 4: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 4 из 29

… и сантехника

http://www.flickr.com/photos/cgt/4592048715

Page 5: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 5 из 29

Файловая система

Stage area

Локальный репозиторий

Удаленный репозиторий

Page 6: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 6 из 29

Репозиторий Gittree 68782cedc

100644 blob 259f9e .gitignore

040000 tree 9aa10b documents

100755 blob 4152a1 build.sh

040000 tree 07a876 source

100644 blob 9bb0b0

040000 tree a82735

100755 blob 809d5c

Page 7: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 7 из 29

демонстрация

Page 8: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 8 из 29

История коммитов

commit a4a878

tree 81ebe3

commit be97d6

tree 9769f8 tree 68782ctree 68782c

commit d67882

commit c782c

Page 9: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 9 из 29

Ссылки

commit a4a878

commit be97d6

commit d67882

commit c782c

tag 2.0

stable

ver_2.1

master

HEAD

Page 10: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 10 из 29

Относительные ссылки

cmt a4a878 cmt be97d6 cmt d67882

cmt c782c

HEAD

cmt e8f6b

cmt d67882

HEAD~1^2

HEAD~1HEAD~2HEAD~3HEAD^1^1

HEAD^^3

Page 11: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 11 из 29

демонстрация

Page 12: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 12 из 29

Три состояния Git

Текущеедерево

.git/objects/

Следующеедерево

.git/index

РабочееДерево

HEAD Индекс Файлы

Последнийкоммит

Следующийкоммит

Текущие изменения

Page 13: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 13 из 29

демонстрация

Page 14: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 14 из 29

Откат коммитов

Последнийкоммит

Следующийкоммит

Текущиеизменения

reset --soft

reset [--mixed]

reset --hard

checkout

HEAD ФайлыИндекс

Да Нет Нет

Да Да Нет

Да Да Да

Да (ветка) Да Да

Возможна потеря данных только при reset --hard

Page 15: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 15 из 29

демонстрация

Page 16: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 16 из 29

когда что-то пошло не так...http://www.genickbruch.com/vb/showthread.php?t=42411

Page 17: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 17 из 29

Используй reflog!http://www.ghostvolta.com/e3hulk-hogans-main-events/

Page 18: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 18 из 29

демонстрация

Page 19: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 19 из 29

черная магияhttp://photographers.com.ua/photo/koldunjya-256487/

Page 20: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 20 из 29

Эти операции меняют хэши коммитов!

git rebase -i git filter-branch

Настройка коммитов Наведение порядка

Page 21: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 21 из 29

демонстрация

Page 22: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 22 из 29

-f — смертельный ингредиент

http://barbatos.ru/215-religiya-indejtsev-majya-chast-4.html

Page 23: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 23 из 29

белая магияhttp://barbatos.ru/215-religiya-indejtsev-majya-chast-4.html

Page 24: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 24 из 29

слияние (merge)http://turizm.lib.ru/img/n/nowak_anatolij_wladimirowich/action/

Page 25: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 25 из 29

Красивая история

A vova

B vova

C igor

D vova

B vova

C igor

D vova

A vova merge

B vova merge

C igor merge

D vova merge

git

pu

ll -r

eba

se

git p

ull [

me

rge

]

Page 26: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 26 из 29

заметки на коммитахhttp://commons.wikimedia.org/wiki/File:Sticky_notes_on_the_wall_of_the_Wikimedia_Foundation_office,_2010-10-26.jpg

Page 27: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 27 из 29

Заметки на коммитах

commit a4a878 commit d67882commit c782c

Важнаязаметка

Простозаметка

Кто здесь?

Page 28: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 28 из 29

аттрибутыhttp://www.stanleyandkatrina.com/2013/09/word-of-week-katrina-von-cat-master-of.html

Page 29: Черная и белая магия Git (мастер-класс)

13 декабря 2013г. Черная и белая магия Git 29 из 29

A

B

D

E

F

0

98

7

6

5

C