SlideShare a Scribd company logo
1 of 47
Download to read offline
Что такое GIT и как с ним
       бороться?
История
•    Создан разработчиками ядра Linux
     для разработки ядра Linux
•    Требования:
1.   Скорость работы
2.   Простота
3.   Параллельная разработка
4.   Работа с большим количеством
     исходного кода
Что же такое GIT?


Система контроля версий для
 распределённых проектов.
Распределённых!
• Особенно хорош для проектов
  ведущихся параллельно несколькими
  командами
• Позволяет работать из
  дому/ночью/поезда
• Независимость от интернета!
• Почему? Оставайтесь с нами 
Идеология совместной работы
Как работают с SVN
Как работают с GIT
Как работают с GIT
Как работают с GIT


• Сервером может быть любой компьютер
• Можно работать вообще без сервера(в
  отличии от SVN)
Принципы хранения данных
Как хранятся данные в SVN
      История изменений
Как хранятся данные в GIT
   Слепки файловой системы
Как хранятся данные в GIT


• Изменяемые файлы копируются(только
  изменяемые)
• Хранится всё, данные только
  добавляются
Жизненный цикл разработки с
           GIT
Устанавливаем GIT

Linux: sudo apt-get install git
Mac OS:
http://code.google.com/p/git-osx-installer
Windows: http://msysgit.github.com
Конфигурируем 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
Фиксация изменений
Пустой репозиторий


•   Определяем состояние файлов
•   git status
•   # On branch master
•   nothing to commit (working directory clean)
Добавляем файл
•   Добавляем 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)
•   Гит говорит, что файл не добавлен
Добавляем файл
•   git add README
•   git status
•   # On branch master
•   # Changes to be committed:
•   # (use "git reset HEAD <file>..." to unstage)
•   #
•   # new file: README
•   Файл добавлен, но не закоммичен
Меняем добавленный файл
• После изменений файла его снова
  нужно добавить(проиндексировать
  изменения)
• Git status
• Changed but not updated:
• # (use "git add <file>..." to update what
  will be committed)
• #
• # modified: README
Отменяем изменения



   Git reset head <file>
Удаляем файлы из индекса
• Если файл удалён, он не удалится
  просто так – останется в
  индексе(изменённые но не
  обновлённые)
• Чтобы удалить из индекса используем
  git rm <имя файла>
Коммитимся
• Git commit
• Открывается текстовый файл в
  выбранном редакторе
• Пишем комментарий, сохраняем,
  происходит commit
  Либо добавляем опцию - m git commit
  -m "Story 182: Fix benchmarks for speed"
Просмотр истории коммитов
• git log
• Большое количество опций(смотрим
  pro.git)
Отменяем изменения
•    Откатить файл до состояния
  последнего коммита Git checkout --
  <имя файла>
• Откатить всё до коммита с версией git
  checkout <имя версии>
Работа с удалённым
   репозиторием
Говорим GIT о существовании
       нового репозитория

• git remote add [сокращение] [url]
• Пример git remote add pb
  git://github.com/paulboone/ticgit.git
• git remote – получаем список всех
  репозиториев
Клонируем из удалённого
         репозитория
• Клонируем репозиторий из удалённого
  git clone <url>
• пример git clone
  git://github.com/schacon/ticgit.git
• Получить данные из репозитория,
  которых нет у вас git fetch
Добавляем на удалённый
           репозиторий
• 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
Работа с ветками
Как создать новую ветку?
•   Git brunch <имя ветки>
•   Перейти на ветку git checkout <имя
    ветки>
    Изменения должны быть закоммичены,
      иначе гит будет матюкатся!
Как получить список веток
• git branch без параметров
• Пример
  git branch
  iss53
 * master
  testing
Мерджинг веток
• 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.
Конфликтные файлы выглядят
             так
• <<<<<<< 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
Ветвление, философия
Как нужно работать с ветками?
• Делаем ветку для изменений
• Делаем изменения
• При срочной работе переключаемся на
  более стабильную ветку
• После окончания работы мержимся с
  мастером
• Удаляем ветку
• Заливаем мастер на сервер
Как нужно работать в команде
•   У каждого своя «главная» ветка
•   Делаем изменения локально
•   Мержимся со своей «главной»
•   Мержимся с мастером
•   Заливаем на сервер
•   Удаляем ветку с экспериментами
Полезные советы
Полезные советы
•   Создаём ветки часто
•   Коммитимся часто
•   Обновляем мастер часто
•   Перед мёржем обновляем мастер
    всегда
Полезные советы


 Часто! Часто! Часто!
Всегда! Всегда! Всегда!
Если что то забыли
• git help <команда>
• git <команда> --help
• man git-<команда> (Открыть мануал
  Linux)
• irc.freenode.net, каналы #git и #github
• Перевод книги pro git http://git-
  scm.com/book/ru
Пример
• Проджектменеджер: Что ты делал
  вчера целый день?
• Разработчик: Я рефакторил класс
  MyBigModule, там было очень много
  работы?
• ПМ: Так где же он, этот класс?
• Р:Неделю назад он был удалён в
  главной ветке
• ПМ:???
Ещё пример
• ПМ: ты говорил, что закончил этот
  функционал, почему его нет в релизе?
• Р: мне нужно смержиться с мастером,
  там много изменений
• ПМ: сколько можно мержиться?
• Р: мне нужна ещё неделя
• ПМ:!?!?!?
Советы
• Если гит матюкается, читаем лог и
  думаем – логи у гита хорошие
• Если чего то не знаем, идём в гугл -
  много материалов, на русском
• Читаем чудесную книгу pro.git – там
  много разумного – доброго – вечного
• Не знаем команду – лезем в хелп
Вопросы?
• Вопросы?
Аплодисменты



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

More Related Content

What's hot

Git для тестировщиков
Git для тестировщиковGit для тестировщиков
Git для тестировщиковSQALab
 
GIT: что внутри, и как это работает?
GIT: что внутри, и как это работает?GIT: что внутри, и как это работает?
GIT: что внутри, и как это работает?Tados
 
GIT Slides (25.03.2015)
GIT Slides (25.03.2015)GIT Slides (25.03.2015)
GIT Slides (25.03.2015)Ilya V
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Egor Stremousov
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере GitSCINO
 
Стажировка-2013, разработчики, занятие 10. Git
Стажировка-2013, разработчики, занятие 10. GitСтажировка-2013, разработчики, занятие 10. Git
Стажировка-2013, разработчики, занятие 10. Git7bits
 
Введение в язык программирования Go
Введение в язык программирования GoВведение в язык программирования Go
Введение в язык программирования GoElena Grahovac
 
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...DevGAMM Conference
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...it-people
 
Готовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковГотовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковElena Grahovac
 
Git - Вадим Валуев
Git - Вадим ВалуевGit - Вадим Валуев
Git - Вадим ВалуевDrupalCamp MSK
 
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков2ГИС Технологии
 

What's hot (20)

Git для тестировщиков
Git для тестировщиковGit для тестировщиков
Git для тестировщиков
 
GIT: что внутри, и как это работает?
GIT: что внутри, и как это работает?GIT: что внутри, и как это работает?
GIT: что внутри, и как это работает?
 
GIT Slides (25.03.2015)
GIT Slides (25.03.2015)GIT Slides (25.03.2015)
GIT Slides (25.03.2015)
 
Git basis
Git basisGit basis
Git basis
 
Git intro
Git introGit intro
Git intro
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"
 
Git
GitGit
Git
 
Git presentation
Git presentationGit presentation
Git presentation
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере Git
 
Git for you
Git for youGit for you
Git for you
 
Gitlab devconf
Gitlab devconfGitlab devconf
Gitlab devconf
 
Стажировка-2013, разработчики, занятие 10. Git
Стажировка-2013, разработчики, занятие 10. GitСтажировка-2013, разработчики, занятие 10. Git
Стажировка-2013, разработчики, занятие 10. Git
 
Введение в язык программирования Go
Введение в язык программирования GoВведение в язык программирования Go
Введение в язык программирования Go
 
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
 
Готовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковГотовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходников
 
Git
GitGit
Git
 
Git - Вадим Валуев
Git - Вадим ВалуевGit - Вадим Валуев
Git - Вадим Валуев
 
Giflow
GiflowGiflow
Giflow
 
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
 

Viewers also liked

игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решенияВладимир Кожаев
 
ньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствВладимир Кожаев
 
Сергей Сергеев "Менеджмент кода, или Почему SCM"
Сергей Сергеев "Менеджмент кода, или Почему SCM"Сергей Сергеев "Менеджмент кода, или Почему SCM"
Сергей Сергеев "Менеджмент кода, или Почему SCM"Yandex
 
Распределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitРаспределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitIvan Evtukhovich
 
A Piece of case.
A Piece of case.A Piece of case.
A Piece of case.TBWA\Moscow
 
Сергей Сергеев — Maintainer кода в большом проекте
Сергей Сергеев — Maintainer кода в большом проектеСергей Сергеев — Maintainer кода в большом проекте
Сергей Сергеев — Maintainer кода в большом проектеYandex
 
Успешная карьера в современной разработки программного обеспечения
Успешная карьера в современной разработки программного обеспеченияУспешная карьера в современной разработки программного обеспечения
Успешная карьера в современной разработки программного обеспеченияSergey Morgunov
 
Адаптация Git flow при коллективной разработке на 1с
Адаптация Git flow при коллективной разработке на 1сАдаптация Git flow при коллективной разработке на 1с
Адаптация Git flow при коллективной разработке на 1сAlexey Lustin
 
Continuous delivery в крупном интернет проекте
Continuous delivery в крупном интернет проектеContinuous delivery в крупном интернет проекте
Continuous delivery в крупном интернет проектеSQALab
 
Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to gitJoel Krebs
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkVolker Hirsch
 

Viewers also liked (16)

ANTLR4 in depth
ANTLR4 in depthANTLR4 in depth
ANTLR4 in depth
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
ньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройств
 
Сергей Сергеев "Менеджмент кода, или Почему SCM"
Сергей Сергеев "Менеджмент кода, или Почему SCM"Сергей Сергеев "Менеджмент кода, или Почему SCM"
Сергей Сергеев "Менеджмент кода, или Почему SCM"
 
Распределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitРаспределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере git
 
A Piece of case.
A Piece of case.A Piece of case.
A Piece of case.
 
Git flow
Git flowGit flow
Git flow
 
Сергей Сергеев — Maintainer кода в большом проекте
Сергей Сергеев — Maintainer кода в большом проектеСергей Сергеев — Maintainer кода в большом проекте
Сергей Сергеев — Maintainer кода в большом проекте
 
Успешная карьера в современной разработки программного обеспечения
Успешная карьера в современной разработки программного обеспеченияУспешная карьера в современной разработки программного обеспечения
Успешная карьера в современной разработки программного обеспечения
 
Адаптация Git flow при коллективной разработке на 1с
Адаптация Git flow при коллективной разработке на 1сАдаптация Git flow при коллективной разработке на 1с
Адаптация Git flow при коллективной разработке на 1с
 
Continuous delivery в крупном интернет проекте
Continuous delivery в крупном интернет проектеContinuous delivery в крупном интернет проекте
Continuous delivery в крупном интернет проекте
 
iron man
iron maniron man
iron man
 
Intro To Git
Intro To GitIntro To Git
Intro To Git
 
GitFlow_MOEX
GitFlow_MOEXGitFlow_MOEX
GitFlow_MOEX
 
Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to git
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of Work
 

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

базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с GitDressTester
 
Основы работы с Git
Основы работы с GitОсновы работы с Git
Основы работы с GitDenis Latushkin
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Dmytro Olaresko
 
Controlul versiunilor
Controlul versiunilor Controlul versiunilor
Controlul versiunilor Dmitrii Stoian
 
Презентация Git-flow (на русском)
Презентация Git-flow (на русском)Презентация Git-flow (на русском)
Презентация Git-flow (на русском)Sergey Chudakov
 
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...Badoo Development
 
Git для продолжающих
Git для продолжающихGit для продолжающих
Git для продолжающихIvan Evtukhovich
 
Фронтенд для миллионов (Орёл)
Фронтенд для миллионов (Орёл)Фронтенд для миллионов (Орёл)
Фронтенд для миллионов (Орёл)Anastasia Goryacheva
 
Git и GitHub для создания учебного контента
Git и GitHub для создания учебного контентаGit и GitHub для создания учебного контента
Git и GitHub для создания учебного контентаПупена Александр
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.DrupalForumZP2012
 
Git, как инструмент управления веб-контентом
Git, как инструмент управления веб-контентомGit, как инструмент управления веб-контентом
Git, как инструмент управления веб-контентомAlex Musayev
 
Gitify - швейцарский нож для MODX-воина
Gitify - швейцарский нож для MODX-воинаGitify - швейцарский нож для MODX-воина
Gitify - швейцарский нож для MODX-воинаMODX Беларусь
 
Переход на Git из Subversion
Переход на Git из SubversionПереход на Git из Subversion
Переход на Git из SubversionMikhail Vasilyev
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаКонстантин Никифоров
 
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Ontico
 

Similar to что такое Git и как с ним бороться (18)

базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с Git
 
Основы работы с Git
Основы работы с GitОсновы работы с Git
Основы работы с Git
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.
 
Controlul versiunilor
Controlul versiunilor Controlul versiunilor
Controlul versiunilor
 
Презентация Git-flow (на русском)
Презентация Git-flow (на русском)Презентация Git-flow (на русском)
Презентация Git-flow (на русском)
 
Про Git
Про GitПро Git
Про Git
 
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
 
Git для продолжающих
Git для продолжающихGit для продолжающих
Git для продолжающих
 
Фронтенд для миллионов (Орёл)
Фронтенд для миллионов (Орёл)Фронтенд для миллионов (Орёл)
Фронтенд для миллионов (Орёл)
 
Git и GitHub для создания учебного контента
Git и GitHub для создания учебного контентаGit и GitHub для создания учебного контента
Git и GitHub для создания учебного контента
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.
 
Chebit.Git
Chebit.GitChebit.Git
Chebit.Git
 
Git, как инструмент управления веб-контентом
Git, как инструмент управления веб-контентомGit, как инструмент управления веб-контентом
Git, как инструмент управления веб-контентом
 
Gitify - швейцарский нож для MODX-воина
Gitify - швейцарский нож для MODX-воинаGitify - швейцарский нож для MODX-воина
Gitify - швейцарский нож для MODX-воина
 
Переход на Git из Subversion
Переход на Git из SubversionПереход на Git из Subversion
Переход на Git из Subversion
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
 
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
 
Начало работы с Git (версия 2016)
Начало работы с Git (версия 2016)Начало работы с Git (версия 2016)
Начало работы с Git (версия 2016)
 

More from Владимир Кожаев (7)

JetBrains MPS
JetBrains MPSJetBrains MPS
JetBrains MPS
 
X text
X textX text
X text
 
Scrum
ScrumScrum
Scrum
 
флеш и сервер
флеш и серверфлеш и сервер
флеш и сервер
 
ньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройств
 
Vladimir kozhayev isometry handmade
Vladimir kozhayev   isometry handmadeVladimir kozhayev   isometry handmade
Vladimir kozhayev isometry handmade
 
Vladimir kozhayev isometry handmade
Vladimir kozhayev   isometry handmadeVladimir kozhayev   isometry handmade
Vladimir kozhayev isometry handmade
 

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

  • 1. Что такое GIT и как с ним бороться?
  • 2. История • Создан разработчиками ядра Linux для разработки ядра Linux • Требования: 1. Скорость работы 2. Простота 3. Параллельная разработка 4. Работа с большим количеством исходного кода
  • 3. Что же такое GIT? Система контроля версий для распределённых проектов.
  • 4. Распределённых! • Особенно хорош для проектов ведущихся параллельно несколькими командами • Позволяет работать из дому/ночью/поезда • Независимость от интернета! • Почему? Оставайтесь с нами 
  • 9. Как работают с GIT • Сервером может быть любой компьютер • Можно работать вообще без сервера(в отличии от SVN)
  • 11. Как хранятся данные в SVN История изменений
  • 12. Как хранятся данные в GIT Слепки файловой системы
  • 13. Как хранятся данные в GIT • Изменяемые файлы копируются(только изменяемые) • Хранится всё, данные только добавляются
  • 15. Устанавливаем GIT Linux: sudo apt-get install git Mac OS: http://code.google.com/p/git-osx-installer Windows: http://msysgit.github.com
  • 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
  • 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
  • 22. Отменяем изменения Git reset head <file>
  • 23. Удаляем файлы из индекса • Если файл удалён, он не удалится просто так – останется в индексе(изменённые но не обновлённые) • Чтобы удалить из индекса используем git rm <имя файла>
  • 24. Коммитимся • Git commit • Открывается текстовый файл в выбранном редакторе • Пишем комментарий, сохраняем, происходит commit Либо добавляем опцию - m git commit -m "Story 182: Fix benchmarks for speed"
  • 25. Просмотр истории коммитов • git log • Большое количество опций(смотрим pro.git)
  • 26. Отменяем изменения • Откатить файл до состояния последнего коммита Git checkout -- <имя файла> • Откатить всё до коммита с версией git checkout <имя версии>
  • 27. Работа с удалённым репозиторием
  • 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. Как нужно работать в команде • У каждого своя «главная» ветка • Делаем изменения локально • Мержимся со своей «главной» • Мержимся с мастером • Заливаем на сервер • Удаляем ветку с экспериментами
  • 40. Полезные советы • Создаём ветки часто • Коммитимся часто • Обновляем мастер часто • Перед мёржем обновляем мастер всегда
  • 41. Полезные советы Часто! Часто! Часто! Всегда! Всегда! Всегда!
  • 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 – там много разумного – доброго – вечного • Не знаем команду – лезем в хелп
  • 47. Аплодисменты А я ещё на машинке, и лобзиком могу 