Skip to content

Инструкция по работе с Git

Igor Kholopov edited this page Nov 1, 2017 · 11 revisions

Здесь написано краткое руководство по использованию системы контроля версий (Version Control System - VCS) - Git.

О чём речь?

Есть две основные причины, по которым возникла потребность в системах контроля версий (version control systems):

1). Часто над большими проектами работает много людей, и возникает потребность кооперироваться и работать над одной и той же кодовой базой вместе;

2). Очень полезно иметь возможность хранить все предыдущие версии кода, так можно до них откатываться (отменять изменения), видеть, когда и какие изменения были внесены, кто их сделал, где именно они были сделаны и т. д.

Одна из таких систем - Git (официальный сайт). Он не является единственным в своём роде (есть, например, SVN, Mercurial, CVS), но в последнее время стал популярен именно Git, поскольку многие разработчики считают наиболее удобным именного его.

Немного терминологии

Одно из ключевых понятий при работе с VCS - это репозиторий. Репозиторий - это виртуальное хранилище версий Вашего проекта. Физически в репозитории "хранятся" файлы. Логически есть ещё различные вещи, относящиеся уже к Git`у, такие как ветки, тэги, версии, коммиты..
Немного о них (для общего развития, если не интересно, можно пропустить):

  • Коммит - очередное зафиксированное состояние проекта, "единица" версии.
    Все коммиты (кроме первого) должны наследоваться от предыдущего коммита, образуя таким образом древовидную структуру, как изображено на рисунке ниже (кружки - коммиты). Как видно из иллюстрации, проект может разветвляться, например если два разработчика параллельно работают и каждый создаёт свои коммиты. Чтобы не возникало полного хаоса и можно было ориентироваться в происходящем вводят понятие ветки
  • Ветка - по большому счёту просто именованная ссылка на некий коммит, указывающая на конец очередного ответвления от главной центральной ветки (по дефолту она зовётся master). Как правило, репозиторий работает в привязке к какой-то ветке и при создании нового коммита, он присоединяется к тому, на который ссылается ветка, и ветка начинает указывать на новй коммит. На картинке выше помимо master есть ветки Little Feature и Big Feature.
    Зачем это нужно? Обычно, когда разработку ведёт несколько человек, каждый вносит коммиты в отдельную ветку, а потом сливает её с главной веткой, как показано ниже.
    Между ветками можно свободно переключаться.

Если хотите как следует разобраться, настоятельно рекомендую пройти этот интерактивный квест (внизу можно включить русский язык)

При работе с Git есть две "версии" каждого репозитория - локальный и удалённый. Локальный репозиторий - это, грубо говоря, то, что у Вас на компьютере. Вы можете совершать любые манипуляции с репозиторием у себя на компьютере (локально), а потом "запушить" (опубликовать изменения) их на удалённое хранилище (сайтов-хранилищ репозиториев несколько, например, сейчас Вы находитесь в репозитории https://github.com/deepmipt/dlschl на сайте www.github.com).

Этапы работы с репозиторием

Есть несколько условных этапов работы с репозиторием (с файлами в нём):

  1. Создание репозитория (git init) или (git clone адресс_репозитория ), если копируем удалённый
  2. Делаем изменения
  3. Помещаем файлы под VCS-отслеживание (git add)
  4. Фиксируем (коммитим) изменения (git commit)
  5. Заливаем (пушим) их на удалённое хранилище (git push)

Где этому научиться

  1. Достаточно прочитать разделы 1.1-2.5 здесь (официальная документация), там всё довольно подробно и понятно расписано

  2. Быстрое введение в Git

  3. Полезные фичи GitHub