SlideShare a Scribd company logo
Git Intro
Кампус 2013, Ижевск

Андрей Лапин
Диадок, Ижевск
Системы контроля версий

•

Распределенные

•
•
•

•

Mercurial
Bazaar

Централизованные

•
•
•

•

Git

SVN
TFS
CVS

Локальные системы управления

•

RCS
Базовые понятия
• Репозиторий
• Commit
• Hash
• Ветка
Клиенты: GitExtensions, TortoiseGit
Git intro
Работа с удаленным репозиторием
Базовые операции
• git init
• git add <filename>
• git commit -a –m <message>
• git commit -a --amend –m <message>
• git status
• git log
git reflog
File moving by Git
Файл .gitignore
Пример файла .gitignore:

settings
#exceptions
!Settings/UnchangeableFiles/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Thumbs.db
*/bin/*.exe
*.bak
*.log
Клонирование репозитория
• git clone git@github.com:trurl123/test.git
• git clone git@github.com:trurl123/test.git myfolder
• SSH and HTTP
Операции с удаленным репозиторием
• git fetch --all
• git push [сервер] [ветка]
• git pull
• git remote add <alias> <url>
Хранение данных в Git
• Папка .git
• Снапшоты
• Сжатие
• Удаленные репозитории
Ветки
Ссылки на ревизии
• Revisions
•
•
•
•
•
•
•

<sha1>, e.g. dae86e1950b1277e545cee180551750029cfe735, dae86e
<refname>
HEAD, ORIG_HEAD, MERGE_HEAD
<refname>@{<date>}, e.g. master@{yesterday}, HEAD@{5 minutes ago}
<refname>@{<n>}
<rev>^, e.g. HEAD^, HEAD^1, HEAD^2
<rev>~<n>, e.g. master~3

• Ranges
•
•
•
•

r
^r1
r1^@
r1^!

• см. также «git help revisions»
Пример из крышек и тильд
G

H

I

 /
D

J
 /

E

F

|

/ 



 | /

|

|/
B

|
C



/

 /
A
A =
B = A^

= A^0
= A^1

C = A^2

= A^2

D = A^^
E = B^2

= A^1^1
= A^^2

F = B^3

Ranges

= A^^3

= A~1
= A~2

G = A^^^ = A^1^1^1 = A~3
H = D^2 = B^^2
= A^^^2
I = F^

= B^3^

= A^^3^

J = F^2

= B^3^2

= A^^3^2

= A~2^2

D
D F
^G D
^D B
B...C
^D B C
C^@
F^! D

G
G
H
E
G
E
I
G

H
H
D
I
H
I
J
H

D
I J D F
J
D
J
F
D

F B
E B C
F B C
F
Команды по работе с ветками
• git merge brname
• git rebase master
Merge
Подумайте, что вы вливаете в свою
ветку
• branch vs origin/branch
Rebase
Проблемы rebase
• Не переписывайте ветки на сервере!
• Не делать rebase после merge
Pull, merge and rebase
• pull = fetch + merge
• pull --rebase == fetch + rebase
Временные ветки
• git stash
• git stash apply
Жизненный цикл ветки (real)
git checkout -b myBranch master
... commits
git push
git fetch
git merge origin/master
… fix after merge
git checkout -B master origin/master
git merge myBranch
git push
Текущий коммит в ветке
• git commit –m <message>
• git pull --rebase
• git push
ПРАКТИКА
Генерация SSH ключа
$ ssh-keygen -t rsa -C "email@example.com"
...
# Enter file in which to save the key
(/c/Users/you/.ssh/id_rsa): [Press enter]

$ clip < ~/.ssh/id_rsa.pub

Account Settings -> SSH Keys -> Add SSH key
$ ssh -T git@github.com
>yes
• См. https://github.com/kontur-edu/kampus-izh-201311/tree/master/01-git
Конфигурирование: настройки
пользователя
Имя пользователя:
$ git config --global user.name "MyName"
E-mail пользователя:
$ git config --global user.email m@il.ru
Задание
Впиши себя!

https://github.com/trurl123/test
Примеры проблем и их
решение
Откат изменений:
отмена одного старого коммита

git revert <hash>

git log
↓
commit dcb4...
Revert "+someone"
This reverts commit 6460
commit 6460...
+someone
Откат изменений:
отмена нескольких последних коммитов
git reset [--hard|--mixed] <commit>
e.g.:
git reset --hard HEAD~3
Почистить папку от результатов
компиляции
• git clean
Удалить ветку на сервере
• git push origin :brName
Удалить ветки у себя, когда на сервере
кто-то удалил ветки
• git remote prune origin
Стянуть коммит из другой ветки к себе
без мерджей
• git cherry-pick
Что бы почитать:
$ git help
$ git help <command>
Pro Git: http://git-scm.com/book
Git magic: http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/ru/
http://pcottle.github.io/learnGitBranching/

More Related Content

PPT
Git для новичков
PPT
что такое Git и как с ним бороться
PDF
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
PPTX
Gitlab devconf
PDF
Андрей Михайлов. Vagrant. Быстрое развертывание среды
PDF
Антон Каляев — Быстрое развертывание среды с Vagrant
PDF
Основы Git
Git для новичков
что такое Git и как с ним бороться
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Gitlab devconf
Андрей Михайлов. Vagrant. Быстрое развертывание среды
Антон Каляев — Быстрое развертывание среды с Vagrant
Основы Git

What's hot (20)

PPTX
Triggermesh - FaaS платформа на Kubernetes
PDF
Никита Шультайс. "Система управления версиями git"
PPTX
Стажировка 2014, занятие 4. Git, Github и Open source.
PDF
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
PDF
Михаил Боднарчук "Docker для PHP разработчиков"
PDF
Приемы Сontinuous Integration при разработке приложений на Caché
PDF
Caché github continuous intergration
PDF
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
PPTX
Scino: DVCS на примере Git
PDF
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
PPTX
Начало работы с Git (Visual Studio 2013, Bitbucket) - version 2013
ODP
Teach your dockers to use CRanes
ODP
Git для продолжающих
PDF
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
PDF
«Composer vs. копипаст модулей битрикса из проекта в проект»
PDF
Артём Ерошенко «Рецепт приготовления облачных тестингов»
PPTX
Git for beginners
PPTX
Стажировка-2013, разработчики, занятие 10. Git
PDF
Building deployment pipeline - DevOps way
PDF
My talk on Docker from Moscow Django Meetup #25
Triggermesh - FaaS платформа на Kubernetes
Никита Шультайс. "Система управления версиями git"
Стажировка 2014, занятие 4. Git, Github и Open source.
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
Михаил Боднарчук "Docker для PHP разработчиков"
Приемы Сontinuous Integration при разработке приложений на Caché
Caché github continuous intergration
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Scino: DVCS на примере Git
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Начало работы с Git (Visual Studio 2013, Bitbucket) - version 2013
Teach your dockers to use CRanes
Git для продолжающих
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
«Composer vs. копипаст модулей битрикса из проекта в проект»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Git for beginners
Стажировка-2013, разработчики, занятие 10. Git
Building deployment pipeline - DevOps way
My talk on Docker from Moscow Django Meetup #25
Ad

Similar to Git intro (20)

ODP
Распределенные системы контоля версия на примере git
ODP
Chebit.Git
PDF
Приручаем Git
PDF
GIT Slides (25.03.2015)
PDF
Git для начинающих
PPTX
Git presentation
ODP
Системы управления версиями (VCS). Знакомство с Git.
PPT
Системы управления версиями (VCS). Знакомство с Git.
PPTX
Git - Вадим Валуев
PPTX
базовые принципы работы с Git
PPTX
Git for you
PDF
Git (presentation)
PPTX
обзор архитектуры и подсистем деплоя и мониторинга
PPTX
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
ODP
Git basis
PDF
GitFlow_MOEX
PDF
Переход на Git из Subversion
ODP
Антон Шумихин - Redmin&Git
PDF
Git, как инструмент управления веб-контентом
PPT
Как удержать проект от анархии с помощью Git
Распределенные системы контоля версия на примере git
Chebit.Git
Приручаем Git
GIT Slides (25.03.2015)
Git для начинающих
Git presentation
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.
Git - Вадим Валуев
базовые принципы работы с Git
Git for you
Git (presentation)
обзор архитектуры и подсистем деплоя и мониторинга
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Git basis
GitFlow_MOEX
Переход на Git из Subversion
Антон Шумихин - Redmin&Git
Git, как инструмент управления веб-контентом
Как удержать проект от анархии с помощью Git
Ad

More from Andrey Lapin (7)

PPTX
виртуальный музей
PDF
создание условий, способствующих эффективному развитию информационно образова...
PPT
информационно образовательная среда в начальной школе
PPT
введение фгос в гимназии. семинар 29.03.12
PPT
экстремизм в молодежной среде
PPT
Классный час безопасный интернет
PDF
Создание информационно образовательной среды в начальной школе
виртуальный музей
создание условий, способствующих эффективному развитию информационно образова...
информационно образовательная среда в начальной школе
введение фгос в гимназии. семинар 29.03.12
экстремизм в молодежной среде
Классный час безопасный интернет
Создание информационно образовательной среды в начальной школе

Git intro