Similar presentations:
Introduction to Git
1.
INTRODUCTION TOGIT
IHAR PRYSHCHEPAU
OCTOBER, 2019
2. план
ПЛАНСистема контроля версий (VCS)
Git
PRESENTATION NAME
2
3. Уровень 1. Автономная работа
УРОВЕНЬ 1. АВТОНОМНАЯРАБОТА
PRESENTATION NAME
3
4. Уровень 2. Network sharing
УРОВЕНЬ 2. NETWORK SHARINGPRESENTATION NAME
4
5. Уровень 3. cloud
УРОВЕНЬ 3. CLOUDPRESENTATION NAME
5
6. Главная проблема контроля версий
ГЛАВНАЯ ПРОБЛЕМА КОНТРОЛЯВЕРСИЙ
PRESENTATION NAME
6
7. Цели VCS
ЦЕЛИ VCSBack-up & restore
Синхронизация командной работы
Отмена изменений
Отслеживание изменений и их авторов
Sandboxing
Возможность работы с ветками
PRESENTATION NAME
7
8. виды VCS: по механизму работы с файлами
ВИДЫ VCS: ПО МЕХАНИЗМУРАБОТЫ С ФАЙЛАМИ
PRESENTATION NAME
8
9. виды VCS: Lock-modify-unlock
ВИДЫ VCS: LOCK-MODIFY-UNLOCKPRESENTATION NAME
9
10. виды VCS: copy-modify-merge
ВИДЫ VCS: COPY-MODIFY-MERGEPRESENTATION 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 & CLONE1. Создать аккаунт в:https://gitlab.com
2. Добавить в профиль ssh public key
PRESENTATION NAME
15
16. Gitlab repository: create & clone
GITLAB REPOSITORY: CREATE & CLONE3. Создать новый проект(репозиторий)
PRESENTATION NAME
16
17. Gitlab repository: create & clone
GITLAB REPOSITORY: CREATE & CLONE4. Скопировать в буфер обмена адрес репозитория для 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 & GITKPRESENTATION NAME
21
22. Git: отмена изменений
GIT: ОТМЕНА ИЗМЕНЕНИЙPRESENTATION NAME
22
23. Git: .gitignore
GIT: .GITIGNOREPRESENTATION NAME
23
24. Git: branch concept
GIT: BRANCH CONCEPTPRESENTATION NAME
24
25. Git: branch merge
GIT: BRANCH MERGEPRESENTATION NAME
25
26. Git: branch merge
GIT: BRANCH MERGEPRESENTATION NAME
26
27. Git: branch merge
GIT: BRANCH MERGEPRESENTATION NAME
27
28. Git: branch merge
GIT: BRANCH MERGEPRESENTATION 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 PICKPRESENTATION NAME
31
32. Git: cherry pick
GIT: CHERRY PICKPRESENTATION NAME
32
33. Git: stash
GIT: STASHPRESENTATION 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 FLOWPRESENTATION 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.
37PRESENTATION NAME