2. История
• Создан разработчиками ядра Linux
для разработки ядра Linux
• Требования:
1. Скорость работы
2. Простота
3. Параллельная разработка
4. Работа с большим количеством
исходного кода
3. Что же такое GIT?
Система контроля версий для
распределённых проектов.
4. Распределённых!
• Особенно хорош для проектов
ведущихся параллельно несколькими
командами
• Позволяет работать из
дому/ночью/поезда
• Независимость от интернета!
• Почему? Оставайтесь с нами
18. Пустой репозиторий
• Определяем состояние файлов
• git status
• # On branch master
• nothing to commit (working directory clean)
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. Добавляем файл
• git add README
• git status
• # On branch master
• # Changes to be committed:
• # (use "git reset HEAD <file>..." to unstage)
• #
• # new file: README
• Файл добавлен, но не закоммичен
21. Меняем добавленный файл
• После изменений файла его снова
нужно добавить(проиндексировать
изменения)
• Git status
• Changed but not updated:
• # (use "git add <file>..." to update what
will be committed)
• #
• # modified: README
23. Удаляем файлы из индекса
• Если файл удалён, он не удалится
просто так – останется в
индексе(изменённые но не
обновлённые)
• Чтобы удалить из индекса используем
git rm <имя файла>
24. Коммитимся
• Git commit
• Открывается текстовый файл в
выбранном редакторе
• Пишем комментарий, сохраняем,
происходит commit
Либо добавляем опцию - m git commit
-m "Story 182: Fix benchmarks for speed"
26. Отменяем изменения
• Откатить файл до состояния
последнего коммита Git checkout --
<имя файла>
• Откатить всё до коммита с версией git
checkout <имя версии>
28. Говорим GIT о существовании
нового репозитория
• git remote add [сокращение] [url]
• Пример git remote add pb
git://github.com/paulboone/ticgit.git
• git remote – получаем список всех
репозиториев
29. Клонируем из удалённого
репозитория
• Клонируем репозиторий из удалённого
git clone <url>
• пример git clone
git://github.com/schacon/ticgit.git
• Получить данные из репозитория,
которых нет у вас git fetch
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
32. Как создать новую ветку?
• Git brunch <имя ветки>
• Перейти на ветку git checkout <имя
ветки>
Изменения должны быть закоммичены,
иначе гит будет матюкатся!
33. Как получить список веток
• git branch без параметров
• Пример
git branch
iss53
* master
testing
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. Конфликтные файлы выглядят
так
• <<<<<<< 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
37. Как нужно работать с ветками?
• Делаем ветку для изменений
• Делаем изменения
• При срочной работе переключаемся на
более стабильную ветку
• После окончания работы мержимся с
мастером
• Удаляем ветку
• Заливаем мастер на сервер
38. Как нужно работать в команде
• У каждого своя «главная» ветка
• Делаем изменения локально
• Мержимся со своей «главной»
• Мержимся с мастером
• Заливаем на сервер
• Удаляем ветку с экспериментами
42. Если что то забыли
• git help <команда>
• git <команда> --help
• man git-<команда> (Открыть мануал
Linux)
• irc.freenode.net, каналы #git и #github
• Перевод книги pro git http://git-
scm.com/book/ru
43. Пример
• Проджектменеджер: Что ты делал
вчера целый день?
• Разработчик: Я рефакторил класс
MyBigModule, там было очень много
работы?
• ПМ: Так где же он, этот класс?
• Р:Неделю назад он был удалён в
главной ветке
• ПМ:???
44. Ещё пример
• ПМ: ты говорил, что закончил этот
функционал, почему его нет в релизе?
• Р: мне нужно смержиться с мастером,
там много изменений
• ПМ: сколько можно мержиться?
• Р: мне нужна ещё неделя
• ПМ:!?!?!?
45. Советы
• Если гит матюкается, читаем лог и
думаем – логи у гита хорошие
• Если чего то не знаем, идём в гугл -
много материалов, на русском
• Читаем чудесную книгу pro.git – там
много разумного – доброго – вечного
• Не знаем команду – лезем в хелп