-
Notifications
You must be signed in to change notification settings - Fork 544
5. Инструкция по работе с Git
Здесь написано краткое руководство по использованию системы контроля версий (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).
Есть несколько условных этапов работы с репозиторием (с файлами в нём):
- Создание репозитория (
git init
) или (git clone адресс_репозитория
), если копируем удалённый - Делаем изменения
- Помещаем файлы под VCS-отслеживание (
git add
) - Фиксируем (коммитим) изменения (
git commit
) - Заливаем (пушим) их на удалённое хранилище (
git push
)
-
Достаточно прочитать разделы 1.1-2.5 здесь (официальная документация), там всё довольно подробно и понятно расписано