Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,041 views

Published on

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

После выступления прошла бурная дискуссия, обмен опытом и приятное общение с профессионалами.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Распределённаяcистема контроля версий файлов Git Никита Шультайс http://shultais.ru
  2. 2. Зачем мне это?
  3. 3. Распределённая? Что это значит?
  4. 4. У нас уже есть проект, но оне еще не в Gite cd /path/to/project/ git init
  5. 5. Но не все файлы должны быть под VCS!Зачем нам *.pyc, *.*~ и тестовые аватарки? echo *.pyc >> .git/info/exclude или vim .git/info/exclude
  6. 6. Это все?git add .git commit -a -m «Первый коммит»
  7. 7. И что теперь?Ничего, программируем как и раньше.Но не забываем делать коммиты.
  8. 8. Я изменил файл и добавил новый? Что делать?git status# On branch master# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)## modified: first.txt# new file: second.txt#
  9. 9. Зафиксируем измененияgit commit -a -m "Добавил второй файл."[master e951bad] Добавил второй файл. 2 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 second.txt
  10. 10. И это все?Я просто отмечаю изменения, которые сделал, чтобы в один момент к ним вернуться? Вся сила в ветках
  11. 11. Мой сайт уже 6 месяцев работает стабильно, зачем...Бля-я-я, что-то сломалось.Что делать, ведь я уже внес столько изменений?
  12. 12. Сила копированияrealtynew_realtyold_realtysuper_new_realtyrealty_v2new_realty_v2
  13. 13. Затеял новую фичу или правишь баг?Создай ветку. git branch new-feature git checkout new-feature
  14. 14. Опять упал ваш стабильный сайт? git checkout master
  15. 15. Правило 1. В master всегда должнанаходится текущая рабочая версия продукта. Следствие: правки кода в master запрещены.
  16. 16. На каждый баг я буду создавать ветку? git branch hotfixes git checkout hotfixes
  17. 17. Правим баг, тестируемgit commit -a -m «fix #341»git checkout mastergit merge hotfixes
  18. 18. Я закончил новую фичу, что теперь? git commit -a -m «Закрыл #76» git checkout master git merge new-feature Опять баг? git checkout hotfiexes git merge master Правим баг git commit -a -m «fix #1245» git checkout master git merge hotfixes
  19. 19. А есть какие-то хорошие практики?Hotfixes — правка баговDevelop — текущая разрабатываемая версия
  20. 20. Сегодня я много кодил. Все зря.Что делать?
  21. 21. CTRL+Z
  22. 22. git checkout .
  23. 23. Правило 2. Постоянно делайте коммиты
  24. 24. Я обнаружил, что случайноудалил важный файл 10 коммитов назад.Что делать?git checkout HEAD~10 важный_файл
  25. 25. Ок, релиз готов, как мне его залить на сайт?Скопировать весь репозиторий? git diff HEAD~1 > update.patch patch -p1 < update.patch git archive -o update.zip HEAD $(git diff --name-only HEAD~1)
  26. 26. Мы наняли еще одного программиста Вариант 1. Равноправный доступ. Новый разработчик копирует ваш репозиторийgit clone /home/username/project myrepogit clone ssh://user@somehost:port/~user/repositorygit clone git://user@somehost:port/~user/repository/project.git
  27. 27. Правило 3.В любом новом репозитории, действуют правила 1 и 2
  28. 28. Новый разработчик написал новую фичу.Но ветка master его репозитория уже отличаетсяот ветки master центрального. git checkout master git pull git merge new-feature git push
  29. 29. Мы наняли еще одно программиста-стажера и не можем дать ему доступ наизменение главного репозитория
  30. 30. Мы наняли удаленного верстальщика.Хранить главный репозиторийна моей машие уже неудобно.
  31. 31. GitHub $12/месяцGitent-scm.comНа корпоративном сайте
  32. 32. А если разместить репозиторийпрямо на сервере с сайтом? git push
  33. 33. Читайте «Магия Git» и Хабр
  34. 34. Спасибо

×