Никита Шультайс. "Система управления версиями git"

35
Распределённая cистема контроля версий файлов Git Никита Шультайс http://shultais.ru

Upload: egor-stremousov

Post on 16-Jun-2015

828 views

Category:

Technology


4 download

DESCRIPTION

Основные тезисы выступления: - организация репозитория, - ветвление, - базовые команды, - работа в одиночку и в команде.После выступления прошла бурная дискуссия, обмен опытом и приятное общение с профессионалами.

TRANSCRIPT

Page 1: Никита Шультайс. "Система управления версиями git"

Распределённаяcистема контроля версий файлов

Git

Никита Шультайсhttp://shultais.ru

Page 2: Никита Шультайс. "Система управления версиями git"

Зачем мне это?

Page 3: Никита Шультайс. "Система управления версиями git"

Распределённая? Что это значит?

Page 4: Никита Шультайс. "Система управления версиями git"

У нас уже есть проект, но оне еще не в Git'e

cd /path/to/project/git init

Page 5: Никита Шультайс. "Система управления версиями git"

Но не все файлы должны быть под VCS!Зачем нам *.pyc, *.*~ и тестовые аватарки?

echo *.pyc >> .git/info/exclude

или

vim .git/info/exclude

Page 6: Никита Шультайс. "Система управления версиями git"

Это все?

git add .git commit -a -m «Первый коммит»

Page 7: Никита Шультайс. "Система управления версиями git"

И что теперь?

Ничего, программируем как и раньше.Но не забываем делать коммиты.

Page 8: Никита Шультайс. "Система управления версиями git"

Я изменил файл и добавил новый?Что делать?

git status# On branch master# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)## modified: first.txt# new file: second.txt#

Page 9: Никита Шультайс. "Система управления версиями git"

Зафиксируем изменения

git commit -a -m "Добавил второй файл."[master e951bad] Добавил второй файл. 2 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 second.txt

Page 10: Никита Шультайс. "Система управления версиями git"

И это все?Я просто отмечаю изменения, которые сделал,

чтобы в один момент к ним вернуться?

Вся сила в ветках

Page 11: Никита Шультайс. "Система управления версиями git"

Мой сайт уже 6 месяцев работает стабильно, зачем...

Бля-я-я, что-то сломалось.

Что делать, ведь я уже внес столько изменений?

Page 12: Никита Шультайс. "Система управления версиями git"

realtynew_realtyold_realtysuper_new_realtyrealty_v2new_realty_v2

Сила копирования

Page 13: Никита Шультайс. "Система управления версиями git"

Затеял новую фичу или правишь баг?Создай ветку.

git branch new-featuregit checkout new-feature

Page 14: Никита Шультайс. "Система управления версиями git"

Опять упал ваш стабильный сайт?

git checkout master

Page 15: Никита Шультайс. "Система управления версиями git"

Правило 1. В master всегда должна находится текущая рабочая версия продукта.

Следствие: правки кода в master запрещены.

Page 16: Никита Шультайс. "Система управления версиями git"

На каждый баг я буду создавать ветку?

git branch hotfixesgit checkout hotfixes

Page 17: Никита Шультайс. "Система управления версиями git"

Правим баг, тестируем

git commit -a -m «fix #341»git checkout mastergit merge hotfixes

Page 18: Никита Шультайс. "Система управления версиями git"

Я закончил новую фичу, что теперь?

git commit -a -m «Закрыл #76»git checkout mastergit merge new-featureОпять баг?git checkout hotfiexesgit merge masterПравим багgit commit -a -m «fix #1245»git checkout mastergit merge hotfixes

Page 19: Никита Шультайс. "Система управления версиями git"

А есть какие-то хорошие практики?

Hotfixes — правка баговDevelop — текущая разрабатываемая версия

Page 20: Никита Шультайс. "Система управления версиями git"
Page 21: Никита Шультайс. "Система управления версиями git"

Сегодня я много кодил. Все зря. Что делать?

Page 22: Никита Шультайс. "Система управления версиями git"

CTRL+Z

Page 23: Никита Шультайс. "Система управления версиями git"

git checkout .

Page 24: Никита Шультайс. "Система управления версиями git"

Правило 2. Постоянно делайте коммиты

Page 25: Никита Шультайс. "Система управления версиями git"

Я обнаружил, что случайноудалил важный файл 10 коммитов назад.Что делать?

git checkout HEAD~10 важный_файл

Page 26: Никита Шультайс. "Система управления версиями git"

Ок, релиз готов, как мне его залить на сайт?Скопировать весь репозиторий?

git diff HEAD~1 > update.patchpatch -p1 < update.patch

git archive -o update.zip HEAD \$(git diff --name-only HEAD~1)

Page 27: Никита Шультайс. "Система управления версиями git"

Мы наняли еще одного программиста

Вариант 1. Равноправный доступ.Новый разработчик копирует ваш репозиторий

git clone /home/username/project myrepo

git clone ssh://user@somehost:port/~user/repository

git clone git://user@somehost:port/~user/repository/project.git

Page 28: Никита Шультайс. "Система управления версиями git"

Правило 3. В любом новом репозитории, действуют правила 1 и 2

Page 29: Никита Шультайс. "Система управления версиями git"

Новый разработчик написал новую фичу.Но ветка master его репозитория уже отличаетсяот ветки master центрального.

git checkout mastergit pullgit merge new-featuregit push

Page 30: Никита Шультайс. "Система управления версиями git"

Мы наняли еще одно программиста-стажера и не можем дать ему доступ на изменение главного репозитория

Page 31: Никита Шультайс. "Система управления версиями git"

Мы наняли удаленного верстальщика.Хранить главный репозиторийна моей машие уже неудобно.

Page 32: Никита Шультайс. "Система управления версиями git"

GitHub $12/месяцGitent-scm.comНа корпоративном сайте

Page 33: Никита Шультайс. "Система управления версиями git"

А если разместить репозиторийпрямо на сервере с сайтом?

git push

Page 34: Никита Шультайс. "Система управления версиями git"

Читайте «Магия Git» и Хабр

Page 35: Никита Шультайс. "Система управления версиями git"

Спасибо