Upload
egor-stremousov
View
832
Download
4
Tags:
Embed Size (px)
DESCRIPTION
Основные тезисы выступления: - организация репозитория, - ветвление, - базовые команды, - работа в одиночку и в команде.После выступления прошла бурная дискуссия, обмен опытом и приятное общение с профессионалами.
Citation preview
Распределённаяcистема контроля версий файлов
Git
Никита Шультайсhttp://shultais.ru
Зачем мне это?
Распределённая? Что это значит?
У нас уже есть проект, но оне еще не в Git'e
cd /path/to/project/git init
Но не все файлы должны быть под VCS!Зачем нам *.pyc, *.*~ и тестовые аватарки?
echo *.pyc >> .git/info/exclude
или
vim .git/info/exclude
Это все?
git add .git commit -a -m «Первый коммит»
И что теперь?
Ничего, программируем как и раньше.Но не забываем делать коммиты.
Я изменил файл и добавил новый?Что делать?
git status# On branch master# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)## modified: first.txt# new file: second.txt#
Зафиксируем изменения
git commit -a -m "Добавил второй файл."[master e951bad] Добавил второй файл. 2 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 second.txt
И это все?Я просто отмечаю изменения, которые сделал,
чтобы в один момент к ним вернуться?
Вся сила в ветках
Мой сайт уже 6 месяцев работает стабильно, зачем...
Бля-я-я, что-то сломалось.
Что делать, ведь я уже внес столько изменений?
realtynew_realtyold_realtysuper_new_realtyrealty_v2new_realty_v2
Сила копирования
Затеял новую фичу или правишь баг?Создай ветку.
git branch new-featuregit checkout new-feature
Опять упал ваш стабильный сайт?
git checkout master
Правило 1. В master всегда должна находится текущая рабочая версия продукта.
Следствие: правки кода в master запрещены.
На каждый баг я буду создавать ветку?
git branch hotfixesgit checkout hotfixes
Правим баг, тестируем
git commit -a -m «fix #341»git checkout mastergit merge hotfixes
Я закончил новую фичу, что теперь?
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
А есть какие-то хорошие практики?
Hotfixes — правка баговDevelop — текущая разрабатываемая версия
Сегодня я много кодил. Все зря. Что делать?
CTRL+Z
git checkout .
Правило 2. Постоянно делайте коммиты
Я обнаружил, что случайноудалил важный файл 10 коммитов назад.Что делать?
git checkout HEAD~10 важный_файл
Ок, релиз готов, как мне его залить на сайт?Скопировать весь репозиторий?
git diff HEAD~1 > update.patchpatch -p1 < update.patch
git archive -o update.zip HEAD \$(git diff --name-only HEAD~1)
Мы наняли еще одного программиста
Вариант 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
Правило 3. В любом новом репозитории, действуют правила 1 и 2
Новый разработчик написал новую фичу.Но ветка master его репозитория уже отличаетсяот ветки master центрального.
git checkout mastergit pullgit merge new-featuregit push
Мы наняли еще одно программиста-стажера и не можем дать ему доступ на изменение главного репозитория
Мы наняли удаленного верстальщика.Хранить главный репозиторийна моей машие уже неудобно.
GitHub $12/месяцGitent-scm.comНа корпоративном сайте
А если разместить репозиторийпрямо на сервере с сайтом?
git push
Читайте «Магия Git» и Хабр
Спасибо