Download - что такое Git и как с ним бороться
![Page 1: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/1.jpg)
Что такое GIT и как с ним бороться?
![Page 2: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/2.jpg)
История
• Создан разработчиками ядра Linux для разработки ядра Linux
• Требования:
1. Скорость работы
2. Простота
3. Параллельная разработка
4. Работа с большим количеством исходного кода
![Page 3: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/3.jpg)
Что же такое GIT?
Система контроля версий для распределённых проектов.
![Page 4: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/4.jpg)
Распределённых!
• Особенно хорош для проектов ведущихся параллельно несколькими командами
• Позволяет работать из дому/ночью/поезда
• Независимость от интернета!
• Почему? Оставайтесь с нами
![Page 5: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/5.jpg)
Идеология совместной работы
![Page 6: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/6.jpg)
Как работают с SVN
![Page 7: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/7.jpg)
Как работают с GIT
![Page 8: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/8.jpg)
Как работают с GIT
![Page 9: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/9.jpg)
Как работают с GIT
• Сервером может быть любой компьютер• Можно работать вообще без сервера(в
отличии от SVN)
![Page 10: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/10.jpg)
Принципы хранения данных
![Page 11: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/11.jpg)
Как хранятся данные в SVN
История изменений
![Page 12: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/12.jpg)
Как хранятся данные в GIT
Слепки файловой системы
![Page 13: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/13.jpg)
Как хранятся данные в GIT
• Изменяемые файлы копируются(только изменяемые)
• Хранится всё, данные только добавляются
![Page 14: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/14.jpg)
Жизненный цикл разработки с GIT
![Page 15: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/15.jpg)
Устанавливаем GIT
Linux: sudo apt-get install git
Mac OS: http://code.google.com/p/git-osx-installer
Windows: http://msysgit.github.com
![Page 16: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/16.jpg)
Конфигурируем GIT
• git config --global user.name "John Doe“
• git config --global user.email [email protected]
• git config --global user.email [email protected]
• git config --global merge.tool vimdiff
• git config --list
![Page 17: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/17.jpg)
Фиксация изменений
![Page 18: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/18.jpg)
Пустой репозиторий
• Определяем состояние файлов• git status• # On branch master• nothing to commit (working directory clean)
![Page 19: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/19.jpg)
Добавляем файл
• Добавляем 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)• Гит говорит, что файл не добавлен
![Page 20: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/20.jpg)
Добавляем файл
• git add README• git status• # On branch master• # Changes to be committed:• # (use "git reset HEAD <file>..." to unstage)• #• # new file: README• Файл добавлен, но не закоммичен
![Page 21: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/21.jpg)
Меняем добавленный файл
• После изменений файла его снова нужно добавить(проиндексировать изменения)
• Git status• Changed but not updated:• # (use "git add <file>..." to update what
will be committed)• #• # modified: README
![Page 22: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/22.jpg)
Отменяем изменения
Git reset head <file>
![Page 23: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/23.jpg)
Удаляем файлы из индекса
• Если файл удалён, он не удалится просто так – останется в индексе(изменённые но не обновлённые)
• Чтобы удалить из индекса используем git rm <имя файла>
![Page 24: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/24.jpg)
Коммитимся
• Git commit
• Открывается текстовый файл в выбранном редакторе
• Пишем комментарий, сохраняем, происходит commitЛибо добавляем опцию - m git commit -m "Story 182: Fix benchmarks for speed"
![Page 25: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/25.jpg)
Просмотр истории коммитов
• git log
• Большое количество опций(смотрим pro.git)
![Page 26: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/26.jpg)
Отменяем изменения
• Откатить файл до состояния последнего коммита Git checkout -- <имя файла>
• Откатить всё до коммита с версией git checkout <имя версии>
![Page 27: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/27.jpg)
Работа с удалённым репозиторием
![Page 28: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/28.jpg)
Говорим GIT о существовании нового репозитория
• git remote add [сокращение] [url]
• Пример git remote add pb git://github.com/paulboone/ticgit.git
• git remote – получаем список всех репозиториев
![Page 29: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/29.jpg)
Клонируем из удалённого репозитория
• Клонируем репозиторий из удалённого git clone <url>
• пример git clone git://github.com/schacon/ticgit.git
• Получить данные из репозитория, которых нет у вас git fetch
![Page 30: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/30.jpg)
Добавляем на удалённый репозиторий
• 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
![Page 31: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/31.jpg)
Работа с ветками
![Page 32: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/32.jpg)
Как создать новую ветку?
• Git brunch <имя ветки>
• Перейти на ветку git checkout <имя ветки>
Изменения должны быть закоммичены, иначе гит будет матюкатся!
![Page 33: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/33.jpg)
Как получить список веток
• git branch без параметров
• Пример
git branch
iss53
* master
testing
![Page 34: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/34.jpg)
Мерджинг веток
• 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.
![Page 35: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/35.jpg)
Конфликтные файлы выглядят так
• <<<<<<< HEAD:index.html• <div id="footer">contact :
[email protected]</div>• =======• <div id="footer">• please contact us at [email protected]• </div>• >>>>>>> iss53:index.html
![Page 36: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/36.jpg)
Ветвление, философия
![Page 37: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/37.jpg)
Как нужно работать с ветками?
• Делаем ветку для изменений
• Делаем изменения
• При срочной работе переключаемся на более стабильную ветку
• После окончания работы мержимся с мастером
• Удаляем ветку
• Заливаем мастер на сервер
![Page 38: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/38.jpg)
Как нужно работать в команде
• У каждого своя «главная» ветка
• Делаем изменения локально
• Мержимся со своей «главной»
• Мержимся с мастером
• Заливаем на сервер
• Удаляем ветку с экспериментами
![Page 39: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/39.jpg)
Полезные советы
![Page 40: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/40.jpg)
Полезные советы
• Создаём ветки часто
• Коммитимся часто
• Обновляем мастер часто
• Перед мёржем обновляем мастер всегда
![Page 41: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/41.jpg)
Полезные советы
Часто! Часто! Часто!
Всегда! Всегда! Всегда!
![Page 42: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/42.jpg)
Если что то забыли
• git help <команда>
• git <команда> --help
• man git-<команда> (Открыть мануал Linux)
• irc.freenode.net, каналы #git и #github
• Перевод книги pro git http://git-scm.com/book/ru
![Page 43: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/43.jpg)
Пример
• Проджектменеджер: Что ты делал вчера целый день?
• Разработчик: Я рефакторил класс MyBigModule, там было очень много работы?
• ПМ: Так где же он, этот класс?• Р:Неделю назад он был удалён в
главной ветке• ПМ:???
![Page 44: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/44.jpg)
Ещё пример
• ПМ: ты говорил, что закончил этот функционал, почему его нет в релизе?
• Р: мне нужно смержиться с мастером, там много изменений
• ПМ: сколько можно мержиться?
• Р: мне нужна ещё неделя
• ПМ:!?!?!?
![Page 45: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/45.jpg)
Советы
• Если гит матюкается, читаем лог и думаем – логи у гита хорошие
• Если чего то не знаем, идём в гугл - много материалов, на русском
• Читаем чудесную книгу pro.git – там много разумного – доброго – вечного
• Не знаем команду – лезем в хелп
![Page 46: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/46.jpg)
Вопросы?
• Вопросы?
![Page 47: что такое Git и как с ним бороться](https://reader034.vdocuments.pub/reader034/viewer/2022052621/5588f585d8b42a5e138b4711/html5/thumbnails/47.jpg)
Аплодисменты
А я ещё на машинке, и лобзиком могу