план
Уровень 1. Автономная работа
Уровень 2. Network sharing
Уровень 3. cloud
Главная проблема контроля версий
Цели VCS
виды VCS: по механизму работы с файлами
виды VCS: Lock-modify-unlock
виды VCS: copy-modify-merge
виды VCS: централизованная или распределенная
Почему Git
преимущества Git
Установка и настройка git
Gitlab repository: create & clone
Gitlab repository: create & clone
Gitlab repository: create & clone
Git: commit and push
Git: fetch from remote and merge
Git: pull from remote
Git gui & gitk
Git: отмена изменений
Git: .gitignore
Git: branch concept
Git: branch merge
Git: branch merge
Git: branch merge
Git: branch merge
Git: branch rebase
Git: разрешение конфликтов
Git: cherry pick
Git: cherry pick
Git: stash
Git: add local project to remote
Git FLOW
Git: extras
6.80M
Categories: programmingprogramming softwaresoftware

Introduction to Git

1.

INTRODUCTION TO
GIT
IHAR PRYSHCHEPAU
OCTOBER, 2019

2. план

ПЛАН
Система контроля версий (VCS)
Git
PRESENTATION NAME
2

3. Уровень 1. Автономная работа

УРОВЕНЬ 1. АВТОНОМНАЯ
РАБОТА
PRESENTATION NAME
3

4. Уровень 2. Network sharing

УРОВЕНЬ 2. NETWORK SHARING
PRESENTATION NAME
4

5. Уровень 3. cloud

УРОВЕНЬ 3. CLOUD
PRESENTATION NAME
5

6. Главная проблема контроля версий

ГЛАВНАЯ ПРОБЛЕМА КОНТРОЛЯ
ВЕРСИЙ
PRESENTATION NAME
6

7. Цели VCS

ЦЕЛИ VCS
Back-up & restore
Синхронизация командной работы
Отмена изменений
Отслеживание изменений и их авторов
Sandboxing
Возможность работы с ветками
PRESENTATION NAME
7

8. виды VCS: по механизму работы с файлами

ВИДЫ VCS: ПО МЕХАНИЗМУ
РАБОТЫ С ФАЙЛАМИ
PRESENTATION NAME
8

9. виды VCS: Lock-modify-unlock

ВИДЫ VCS: LOCK-MODIFY-UNLOCK
PRESENTATION NAME
9

10. виды VCS: copy-modify-merge

ВИДЫ VCS: COPY-MODIFY-MERGE
PRESENTATION NAME
10

11. виды VCS: централизованная или распределенная

ВИДЫ VCS: ЦЕНТРАЛИЗОВАННАЯ
ИЛИ РАСПРЕДЕЛЕННАЯ
PRESENTATION NAME
11

12. Почему Git

ПОЧЕМУ GIT
В 2005 году Линус Торвальдс разработал GIT для управления
версиями ядра Linux, однако, чуть позднее его поддержкой занялся
другой человек, японский инженер-программист – Джунио Хамано.
На сегодняшний день, GIT – это одна из самых известных систем
контроля версий с открытым исходным кодом, на которую
полагаются миллионы проектов по всем миру (включая как
коммерческие, так и бесплатные проекты). GIT – это полностью
бесплатное программное обеспечение, поддерживающее
множество ОС, таких как Mac, Linux, Windows и Solaris. Скачать
соответствующие дистрибутивы можно с официального сайта GIT.
PRESENTATION NAME
12

13. преимущества Git

ПРЕИМУЩЕСТВА GIT
Распределенная система управления версиями, GIT следует принципу одноранговой сети – peer
to peer (равный к равному) в отличии от других систем вроде Subversion (SVN), которая
основана на модели client-server (клиент-сервер).
GIT позволяет разработчикам иметь множество совершенно независимых веток кода. Создание,
удаление и объединение этих веток происходит без каких-либо проблем и больших затрат
времени
В GIT все операции атомарны; это означает, что любое действие может быть полностью
удачным или провалиться (без каких-либо изменений). Это действительно важно, так как в
некоторых системах контроля версий (вроде CVS), где действия не атомарны, некоторые
повисшие операции по всему хранилищу, могут оставить его в нестабильном состоянии.
В отличии от других VCS, таких как SVN или CVS где метаданные хранятся в скрытых папках
(.cvs, .svn, и т.д.), в GIT все данные расположены в каталогах .git.
Он использует модель данных, которая помогает обеспечить криптографическую целостность
всего, что присутствует в репозитории. Каждый раз когда файлы добавляются или коммитятся,
генерируются их контрольные суммы; аналогичный процесс происходит при их извлечении.
Еще одна превосходная функция, присутствующая в GIT – это его индекс. В пределах индекса,
разработчики могут форматировать коммиты и просматривать их до фактического применения.
PRESENTATION NAME
13

14. Установка и настройка git

УСТАНОВКА И НАСТРОЙКА
GIT
1. Скачать установочный файл: http://git-scm.com/downloads
2. Выполнить все шаги, используя дефолтные опции
3. Открыть консоль git bash и назначить имя и емейл
вашего пользователя
$ MINGW64 ~ git config --global user.name “Ivan Petrov“
$ MINGW64 ~ git config --global user.email [email protected]
4. Сгенерировать ssh ключ для работы с репозиторием по протоколу ssh
$ MINGW64 ~ ssh-keygen -t rsa –C “[email protected]"
PRESENTATION NAME
14

15. Gitlab repository: create & clone

GITLAB REPOSITORY: CREATE & CLONE
1. Создать аккаунт в:https://gitlab.com
2. Добавить в профиль ssh public key
PRESENTATION NAME
15

16. Gitlab repository: create & clone

GITLAB REPOSITORY: CREATE & CLONE
3. Создать новый проект(репозиторий)
PRESENTATION NAME
16

17. Gitlab repository: create & clone

GITLAB REPOSITORY: CREATE & CLONE
4. Скопировать в буфер обмена адрес репозитория для ssh
PRESENTATION NAME
17

18. Git: commit and push

GIT: COMMIT AND PUSH
$ git status – показывает текущее
состояние локального репозитория
$ git add <file name> – добавляет
изменения в git index
$ git commit –m <message> – создает
commit c комментарием в локальном
репозитории
$ git push – отправляет все
существующие коммиты в локальном
репозитории в удаленный
репозиторий в соответствующую
ветку
PRESENTATION NAME
18

19. Git: fetch from remote and merge

GIT: FETCH FROM REMOTE AND MERGE
$ git fetch – собирает все коммиты из
целевой ветки, которых нет в текущей
ветке, и сохраняет их в локальном
репозитории, не сливая их в текущую
ветку.
$ git merge – добавляет изменения в
текущую ветку
PRESENTATION NAME
19

20. Git: pull from remote

GIT: PULL FROM REMOTE
$ git pull – добавляет все коммиты в
текущую ветку без возможности их
просмотра
PRESENTATION NAME
20

21. Git gui & gitk

GIT GUI & GITK
PRESENTATION NAME
21

22. Git: отмена изменений

GIT: ОТМЕНА ИЗМЕНЕНИЙ
PRESENTATION NAME
22

23. Git: .gitignore

GIT: .GITIGNORE
PRESENTATION NAME
23

24. Git: branch concept

GIT: BRANCH CONCEPT
PRESENTATION NAME
24

25. Git: branch merge

GIT: BRANCH MERGE
PRESENTATION NAME
25

26. Git: branch merge

GIT: BRANCH MERGE
PRESENTATION NAME
26

27. Git: branch merge

GIT: BRANCH MERGE
PRESENTATION NAME
27

28. Git: branch merge

GIT: BRANCH MERGE
PRESENTATION NAME
28

29. Git: branch rebase

GIT: BRANCH REBASE
ЗОЛОТОЕ ПРАВИЛО:
!!!НИКОГДА НЕ ДЕЛАЙТЕ REBASE ОБЩИХ ВЕТОК
PRESENTATION NAME
29

30. Git: разрешение конфликтов

GIT: РАЗРЕШЕНИЕ КОНФЛИКТОВ
PRESENTATION NAME
30

31. Git: cherry pick

GIT: CHERRY PICK
PRESENTATION NAME
31

32. Git: cherry pick

GIT: CHERRY PICK
PRESENTATION NAME
32

33. Git: stash

GIT: STASH
PRESENTATION NAME
33

34. Git: add local project to remote

GIT: ADD LOCAL PROJECT TO REMOTE
$ git init – инициализирует текущую
папку как локальный репозиторий
git
PRESENTATION NAME
34

35. Git FLOW

GIT FLOW
PRESENTATION NAME
35

36. Git: extras

GIT: EXTRAS
• git config -- global user.name “<user name>”
• git config -- global user.email “[email protected]
• git config --global core.editor "'C:/Program Files
(x86)/Notepad++/notepad++.exe‘”
• git blame
• git bisect
• git log --pretty=oneline
• git log --pretty=format:"%h %s" –graph
• git config --global alias.last 'log -1 HEAD‘
• git last
• git log master..experiment
• git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
• git rerere
• git submodule
PRESENTATION NAME
36

37.

37
PRESENTATION NAME
English     Русский Rules