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

47
Что такое GIT и как с ним бороться?
  • Upload

    -
  • Category

    Documents

  • view

    2.216
  • download

    0

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

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

Что такое GIT и как с ним бороться?

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

История

• Создан разработчиками ядра Linux для разработки ядра Linux

• Требования:

1. Скорость работы

2. Простота

3. Параллельная разработка

4. Работа с большим количеством исходного кода

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

Что же такое GIT?

Система контроля версий для распределённых проектов.

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

Распределённых!

• Особенно хорош для проектов ведущихся параллельно несколькими командами

• Позволяет работать из дому/ночью/поезда

• Независимость от интернета!

• Почему? Оставайтесь с нами

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

Идеология совместной работы

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

Как работают с SVN

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

Как работают с GIT

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

Как работают с GIT

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

Как работают с GIT

• Сервером может быть любой компьютер• Можно работать вообще без сервера(в

отличии от SVN)

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

Принципы хранения данных

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

Как хранятся данные в SVN

История изменений

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

Как хранятся данные в GIT

Слепки файловой системы

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

Как хранятся данные в GIT

• Изменяемые файлы копируются(только изменяемые)

• Хранится всё, данные только добавляются

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

Жизненный цикл разработки с GIT

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

Устанавливаем 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 и как с ним бороться

Конфигурируем 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 и как с ним бороться

Фиксация изменений

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

Пустой репозиторий

• Определяем состояние файлов• git status• # On branch master• nothing to commit (working directory clean)

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

Добавляем файл

• Добавляем 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 и как с ним бороться

Добавляем файл

• 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 и как с ним бороться

Меняем добавленный файл

• После изменений файла его снова нужно добавить(проиндексировать изменения)

• Git status• Changed but not updated:• # (use "git add <file>..." to update what

will be committed)• #• # modified: README

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

Отменяем изменения

Git reset head <file>

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

Удаляем файлы из индекса

• Если файл удалён, он не удалится просто так – останется в индексе(изменённые но не обновлённые)

• Чтобы удалить из индекса используем git rm <имя файла>

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

Коммитимся

• Git commit

• Открывается текстовый файл в выбранном редакторе

• Пишем комментарий, сохраняем, происходит commitЛибо добавляем опцию - m git commit -m "Story 182: Fix benchmarks for speed"

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

Просмотр истории коммитов

• git log

• Большое количество опций(смотрим pro.git)

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

Отменяем изменения

• Откатить файл до состояния последнего коммита Git checkout -- <имя файла>

• Откатить всё до коммита с версией git checkout <имя версии>

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

Работа с удалённым репозиторием

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

Говорим GIT о существовании нового репозитория

• git remote add [сокращение] [url]

• Пример git remote add pb git://github.com/paulboone/ticgit.git

• git remote – получаем список всех репозиториев

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

Клонируем из удалённого репозитория

• Клонируем репозиторий из удалённого git clone <url>

• пример git clone git://github.com/schacon/ticgit.git

• Получить данные из репозитория, которых нет у вас git fetch

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

Добавляем на удалённый репозиторий

• 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 и как с ним бороться

Работа с ветками

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

Как создать новую ветку?

• Git brunch <имя ветки>

• Перейти на ветку git checkout <имя ветки>

Изменения должны быть закоммичены, иначе гит будет матюкатся!

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

Как получить список веток

• git branch без параметров

• Пример

git branch

iss53

* master

testing

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

Мерджинг веток

• 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 и как с ним бороться

Конфликтные файлы выглядят так

• <<<<<<< 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 и как с ним бороться

Ветвление, философия

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

Как нужно работать с ветками?

• Делаем ветку для изменений

• Делаем изменения

• При срочной работе переключаемся на более стабильную ветку

• После окончания работы мержимся с мастером

• Удаляем ветку

• Заливаем мастер на сервер

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

Как нужно работать в команде

• У каждого своя «главная» ветка

• Делаем изменения локально

• Мержимся со своей «главной»

• Мержимся с мастером

• Заливаем на сервер

• Удаляем ветку с экспериментами

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

Полезные советы

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

Полезные советы

• Создаём ветки часто

• Коммитимся часто

• Обновляем мастер часто

• Перед мёржем обновляем мастер всегда

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

Полезные советы

Часто! Часто! Часто!

Всегда! Всегда! Всегда!

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

Если что то забыли

• git help <команда>

• git <команда> --help

• man git-<команда> (Открыть мануал Linux)

• irc.freenode.net, каналы #git и #github

• Перевод книги pro git http://git-scm.com/book/ru

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

Пример

• Проджектменеджер: Что ты делал вчера целый день?

• Разработчик: Я рефакторил класс MyBigModule, там было очень много работы?

• ПМ: Так где же он, этот класс?• Р:Неделю назад он был удалён в

главной ветке• ПМ:???

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

Ещё пример

• ПМ: ты говорил, что закончил этот функционал, почему его нет в релизе?

• Р: мне нужно смержиться с мастером, там много изменений

• ПМ: сколько можно мержиться?

• Р: мне нужна ещё неделя

• ПМ:!?!?!?

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

Советы

• Если гит матюкается, читаем лог и думаем – логи у гита хорошие

• Если чего то не знаем, идём в гугл - много материалов, на русском

• Читаем чудесную книгу pro.git – там много разумного – доброго – вечного

• Не знаем команду – лезем в хелп

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

Вопросы?

• Вопросы?

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

Аплодисменты

А я ещё на машинке, и лобзиком могу