что такое Git и как с ним бороться

2,752 views
2,576 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,752
On SlideShare
0
From Embeds
0
Number of Embeds
1,350
Actions
Shares
0
Downloads
24
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

что такое Git и как с ним бороться

  1. 1. Что такое GIT и как с ним бороться?
  2. 2. История• Создан разработчиками ядра Linux для разработки ядра Linux• Требования:1. Скорость работы2. Простота3. Параллельная разработка4. Работа с большим количеством исходного кода
  3. 3. Что же такое GIT?Система контроля версий для распределённых проектов.
  4. 4. Распределённых!• Особенно хорош для проектов ведущихся параллельно несколькими командами• Позволяет работать из дому/ночью/поезда• Независимость от интернета!• Почему? Оставайтесь с нами 
  5. 5. Идеология совместной работы
  6. 6. Как работают с SVN
  7. 7. Как работают с GIT
  8. 8. Как работают с GIT
  9. 9. Как работают с GIT• Сервером может быть любой компьютер• Можно работать вообще без сервера(в отличии от SVN)
  10. 10. Принципы хранения данных
  11. 11. Как хранятся данные в SVN История изменений
  12. 12. Как хранятся данные в GIT Слепки файловой системы
  13. 13. Как хранятся данные в GIT• Изменяемые файлы копируются(только изменяемые)• Хранится всё, данные только добавляются
  14. 14. Жизненный цикл разработки с GIT
  15. 15. Устанавливаем GITLinux: sudo apt-get install gitMac OS:http://code.google.com/p/git-osx-installerWindows: http://msysgit.github.com
  16. 16. Конфигурируем GIT• git config --global user.name "John Doe“• git config --global user.email johndoe@example.com• git config --global user.email johndoe@example.com• git config --global merge.tool vimdiff• git config --list
  17. 17. Фиксация изменений
  18. 18. Пустой репозиторий• Определяем состояние файлов• git status• # On branch master• nothing to commit (working directory clean)
  19. 19. Добавляем файл• Добавляем README(и любой другой файл так же)• git status• # On branch master• # Untracked files:• # (use "git add <file>..." to include in what will be committed)• #• # README• nothing added to commit but untracked files present (use "git add" to track)• Гит говорит, что файл не добавлен
  20. 20. Добавляем файл• git add README• git status• # On branch master• # Changes to be committed:• # (use "git reset HEAD <file>..." to unstage)• #• # new file: README• Файл добавлен, но не закоммичен
  21. 21. Меняем добавленный файл• После изменений файла его снова нужно добавить(проиндексировать изменения)• Git status• Changed but not updated:• # (use "git add <file>..." to update what will be committed)• #• # modified: README
  22. 22. Отменяем изменения Git reset head <file>
  23. 23. Удаляем файлы из индекса• Если файл удалён, он не удалится просто так – останется в индексе(изменённые но не обновлённые)• Чтобы удалить из индекса используем git rm <имя файла>
  24. 24. Коммитимся• Git commit• Открывается текстовый файл в выбранном редакторе• Пишем комментарий, сохраняем, происходит commit Либо добавляем опцию - m git commit -m "Story 182: Fix benchmarks for speed"
  25. 25. Просмотр истории коммитов• git log• Большое количество опций(смотрим pro.git)
  26. 26. Отменяем изменения• Откатить файл до состояния последнего коммита Git checkout -- <имя файла>• Откатить всё до коммита с версией git checkout <имя версии>
  27. 27. Работа с удалённым репозиторием
  28. 28. Говорим GIT о существовании нового репозитория• git remote add [сокращение] [url]• Пример git remote add pb git://github.com/paulboone/ticgit.git• git remote – получаем список всех репозиториев
  29. 29. Клонируем из удалённого репозитория• Клонируем репозиторий из удалённого git clone <url>• пример git clone git://github.com/schacon/ticgit.git• Получить данные из репозитория, которых нет у вас git fetch
  30. 30. Добавляем на удалённый репозиторий• Git push <имя удалённого сервера> <имя ветки>• Получить информацию о удалённом репозитории git remote show [удал. сервер]• git remote show origin• * remote origin• URL: git://github.com/schacon/ticgit.git• Remote branch merged with git pull while on branch master• master• Tracked remote branches• master• ticgit
  31. 31. Работа с ветками
  32. 32. Как создать новую ветку?• Git brunch <имя ветки>• Перейти на ветку git checkout <имя ветки> Изменения должны быть закоммичены, иначе гит будет матюкатся!
  33. 33. Как получить список веток• git branch без параметров• Пример git branch iss53 * master testing
  34. 34. Мерджинг веток• git checkout <имя ветки>• Git merge <имя другой ветки>• Конфликтные изменения будут отображены в логе, нужно смёрджиться и добавить их в индекс (git add)• git merge iss53• Auto-merging index.html• CONFLICT (content): Merge conflict in index.html• Automatic merge failed; fix conflicts and then commit the result.
  35. 35. Конфликтные файлы выглядят так• <<<<<<< HEAD:index.html• <div id="footer">contact : email.support@github.com</div>• =======• <div id="footer">• please contact us at support@github.com• </div>• >>>>>>> iss53:index.html
  36. 36. Ветвление, философия
  37. 37. Как нужно работать с ветками?• Делаем ветку для изменений• Делаем изменения• При срочной работе переключаемся на более стабильную ветку• После окончания работы мержимся с мастером• Удаляем ветку• Заливаем мастер на сервер
  38. 38. Как нужно работать в команде• У каждого своя «главная» ветка• Делаем изменения локально• Мержимся со своей «главной»• Мержимся с мастером• Заливаем на сервер• Удаляем ветку с экспериментами
  39. 39. Полезные советы
  40. 40. Полезные советы• Создаём ветки часто• Коммитимся часто• Обновляем мастер часто• Перед мёржем обновляем мастер всегда
  41. 41. Полезные советы Часто! Часто! Часто!Всегда! Всегда! Всегда!
  42. 42. Если что то забыли• git help <команда>• git <команда> --help• man git-<команда> (Открыть мануал Linux)• irc.freenode.net, каналы #git и #github• Перевод книги pro git http://git- scm.com/book/ru
  43. 43. Пример• Проджектменеджер: Что ты делал вчера целый день?• Разработчик: Я рефакторил класс MyBigModule, там было очень много работы?• ПМ: Так где же он, этот класс?• Р:Неделю назад он был удалён в главной ветке• ПМ:???
  44. 44. Ещё пример• ПМ: ты говорил, что закончил этот функционал, почему его нет в релизе?• Р: мне нужно смержиться с мастером, там много изменений• ПМ: сколько можно мержиться?• Р: мне нужна ещё неделя• ПМ:!?!?!?
  45. 45. Советы• Если гит матюкается, читаем лог и думаем – логи у гита хорошие• Если чего то не знаем, идём в гугл - много материалов, на русском• Читаем чудесную книгу pro.git – там много разумного – доброго – вечного• Не знаем команду – лезем в хелп
  46. 46. Вопросы?• Вопросы?
  47. 47. АплодисментыА я ещё на машинке, и лобзиком могу 

×