Знакомство c Git

Что вас ждёт

В этом материале вы познакомитесь с системой управления версиями Git и узнаете, как работать с ней через приложение GitHub Desktop. Эти инструменты позволяют разработчикам контролировать версии кода приложения. 

Представьте, что группа разработчиков создаёт банковский сайт. Один сотрудник добавил функцию перевода средств со счёта в копилку, но после этого весь сервис вышел из строя. Недовольные клиенты отправляют жалобы в поддержку, так как теперь не могут выполнять переводы. При этом специалист не исправит проблему в тот же день: она возникла в выходной, когда за сайтом следит лишь дежурный администратор.

Если при разработке использовали систему версий Git, решить проблему гораздо проще и быстрее. Администратор оперативно вернёт проект к предыдущей стабильной версии. Клиенты снова смогут использовать сервис, а в будни разработчики проведут диагностику и исправят недочёты в обновлении. Без Git разобраться в такой ситуации сложнее: пришлось бы ждать, пока специалисты выйдут на работу после выходных и исправят проблемы.

Git

Git — это система управления версиями, с помощью которой удобно организовывать работу над проектом. Git хорошо подходит для команд, где каждый участник работает над кодом на своём компьютере, а результат передаёт в общий главный проект, который идёт в продакшн.

Git хранит историю разработки проекта. В нём можно:

  • отслеживать изменения в файлах и коде;
  • возвращаться к предыдущим версиям кода;
  • организовывать совместную работу над проектом.

Git — это не приложение, а, скорее, инструмент командной строки, в которой разработчик пишет команды. У Git нет графического интерфейса, поэтому удобнее работать в специальных приложениях-клиентах с привычным окном элементов — GUI Clients. Одно из них вы будете использовать при выполнении практических работ.

Вся история изменений, папки и файлы проекта хранятся в репозитории Git. Им можно управлять при помощи команд или графического интерфейса.

Существует два типа репозитория:

  • Локальный расположен на вашем компьютере. Это папка, которой управляет Git, удобен для индивидуальной работы над проектом.
  • Удалённый расположен на удалённом сервере. Он напоминает папку в облачном хранилище (например, на Яндекс Диске), которая доступна другим разработчикам. Ей также управляет Git. Такой способ подходит для командной работы над проектом.
Как контролировать версии кода в проекте с помощью Git

История изменений в Git — это список всех корректировок в репозитории с момента его создания. Он позволит перейти к предыдущей версии проекта, изучить и восстановить созданный код. Например, при сбое на сайте вы всегда можете вернуться к последней стабильной версии.

Commit — это изменения, которые сохраняются в общей истории.

Создание изменений (новых коммитов) напоминает сохранение в видеоиграх. Сохраниться в Git — значит закоммитить. Вы всегда можете вернуться к нужному коммиту и продолжить работу из этой точки.

Чаще всего специалисты: 

  • создают коммиты: в проекте указаны папки и файлы, которые можно добавить;
  • смотрят коммиты, чтобы узнать, что делали коллеги, и взять полезный фрагмент;
  • переходят (откатываются) к коммиту, чтобы изменить файлы или код.

Теперь вы знаете, что такое Git, репозиторий и коммиты. В следующем блоке рассмотрим приложения для работы с ним.

GitHub Desktop

Удалённую работу над кодом проекта можно организовать с помощью Git. Чтобы хранить информацию о коде, необходим удалённый сервис, например GitHub. Его используют для проектов с открытым исходным кодом, с которыми взаимодействует большое сообщество разработчиков. Сервис предоставляет много инструментов для совместной работы. 

У сервиса GitHub есть свой GUI Client — GitHub Desktop. Он заточен под работу с GitHub, в котором разработчики обычно собирают своё портфолио. 

Установка GitHub Desktop

Скачайте файл установки на официальном сайте

1. Запустите установку, а затем зайдите в приложение. 

2. После запуска вы увидите окно входа в аккаунт GitHub. Кликните по кнопке регистрации (см. скриншот ниже), зарегистрируйтесь на сайте GitHub или войдите в свой аккаунт. В Windows внешний вид приложений может отличаться.

3. При первом запуске приложения оставьте настройки конфигурации по умолчанию и нажмите Finish.

Первый проект с GitHub Desktop

Создадим первый проект, чтобы разобрать GitHub Desktop на базовом уровне. Этот опыт пригодится для выполнения практических работ.

1. Запустите GitHub Desktop.

2. В окне создания проекта выберите пункт Create a New Repository on your Hard Drive, чтобы создать репозиторий проекта.

Также репозиторий можно создать через пункт Create a New Repository on your Hard Drive… в верхнем меню File.

3. В появившемся окне введите имя репозитория first-project. Выберите папку, в которой создадите репозиторий, а затем нажмите Create Repository.

4. После этого откроется окно созданного репозитория. Внимательно изучите его.

Откройте папку проекта first-project в VS Code через Open in Visual Studio Code или в самом редакторе кода.

5. Создайте файлы для работы (например, index.html).

6. Внесите любые изменения в код и сохраните созданные файлы.

7. Проверьте, что в репозитории произошли изменения: об этом сообщит GitHub Desktop.

8. Если в проекте произошли изменения, можно создать коммит. Сейчас все файлы проекта помечены галочкой: она показывает выбранные файлы, которые будут сохранены.

9. В поле «Название» укажите название изменений в коде. Коммит должен содержать небольшое описание, которое чётко рассказывает, что именно вы сделали, например add index. Нажмите Commit to main, чтобы создать коммит.

10. После создания коммита окно приложения принимает исходный вид без изменений в проекте.

Коммит добавлен в историю изменений. В нём сохраняются не файлы проекта, а лишь изменения, что существенно экономит ресурсы и ускоряет работу с проектом.

Обычно коммиты создают после решения конкретной задачи, когда этап разработки пройден. 

Добавим ещё один коммит.

1. Вернитесь в редактор кода, внесите новые изменения в код.

2. GitHub Desktop снова укажет на изменения в проекте и коде. VS Code и GitHub Desktop запущены одновременно.

3. Создайте второй коммит с названием изменений: он тоже появится в истории коммитов.

4. Зайдите на вкладку History и изучите окно в режиме отображения истории.

Нажмите на коммит в левой части приложения, чтобы посмотреть, что именно и когда изменено. Это полезно в большом проекте с множеством коммитов.

Нажмите правой кнопкой мыши по коммиту и выберите Checkout Commit в контекстном меню. Вы сможете посмотреть коммит в GitHub Desktop и редакторе кода, так как вернётесь к прошлому сохранению. Коммиты, созданные после выбранного, исчезнут из истории, и вернуть их будет сложно.

Первый проект с историей версий создан.

Ветки в Git

В этом блоке вы познакомитесь с ветками в репозитории Git, поймёте, как с их помощью организовать работу над проектом и самостоятельно создадите проект с двумя ветками.

Представьте, что хотите протестировать идею и показать её коллегам. В таком случае стоит использовать черновик, чтобы не испортить основной проект. Рассмотрим, как это сделать.

Ветки

История разработки в Git — это последовательность созданных коммитов (сохранений). Вместе с репозиторием создаётся главная ветка — main (или master в ранних версиях), а каждый коммит становится её частью.

Ветка — это последовательность коммитов, которая имеет начало и может соединяться с другой. В системе Git ветка — это линия разработки. Всю чистовую работу проводят в главной ветке, а эксперименты над кодом — в дополнительной, которую используют как альтернативную версию проекта или черновик. Так все участники могут одновременно работать над разными функциями или исправлениями, а затем объединять их в основной версии.

Например, можно создать новую ветку dev и добавлять в неё коммиты.

При необходимости можно вернуться в ветку main и продолжить основную работу в ней. Если эксперимент с кодом удался, черновую ветку dev можно объединить с main.

Рассмотрим, как работать с ветками Git с помощью GitHub Desktop.

Ветки в GitHub Desktop

Как управлять ветками в GitHub Desktop

1. Создайте в GitHub Desktop репозиторий branches-project.

Важно следить, где именно вы находитесь, так как новые коммиты попадают в текущую ветку.

2. Откройте папку проекта в редакторе кода удобным способом. Создайте файлы для работы, например index.html.

3. Внесите любые изменения в код и сохраните созданные файлы. 

4. В GitHub Desktop создайте коммит изменений, например add index. Он будет в ветке main.

5. Нажмите на вкладку текущей ветки и на кнопку создания ветки New Branch.

6. В открывшемся окне введите название dev и нажмите Create Branch.

7. Ветка dev добавлена и является текущей. Список всех веток можно посмотреть на вкладке текущей ветки, там же можно переключать их.

Перед переключением на другую ветку нужно закоммитить изменения в текущей. 

8. Проверьте, что ветка dev выбрана в GitHub Desktop и является текущей. Затем создайте в проекте новый файл и внесите в него изменения. 

9. Создайте новый коммит (в нашем примере new function commit) в ветке dev. В истории коммитов проверьте, что он действительно расположен в ветке dev, а коммит add index не отображается, так как создан в ветке main.

10. Переключитесь на ветку main в окне работы с ветками. В редакторе появится код из коммита add index, так как ветка main стала текущей.

В виде блок-схемы ветки и коммиты выглядят так.

Обратите внимание, что текущий коммит в ветке main — add index, а в ветке dev — new function commit.

11. Вы можете работать над основной частью проекта в ветке main, а для экспериментов переходить в dev, так тестовый код не повлияет на основную ветку.

Как добавить изменения из dev в основную ветку main (сделать слияние веток)

1. Перейдите в main: ветка, в которую вольётся другая, должна быть текущей.

2. Нажмите Choose a branch to merge into main, чтобы выполнить слияние.

3. В окне выбора укажите, какую ветку хотите влить в main. В нашем случае нужно нажать на dev.

4. Нажмите Create a merge commit, чтобы выполнить слияние веток (перенос изменений в другую ветку). 


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

Слияние выполнено. Теперь история коммитов в ветке main выглядит так. 

Блок-схема показывает, что именно произошло.

Первый проект с ветками создан: вы сможете использовать их в своих проектах.

Ключевые термины

Гит (Git) — система контроля и управления версиями файлов.

Гитхаб (GitHub) и Гитлаб (GitLab) — веб-сервисы для размещения репозиториев и совместной разработки проектов с помощью Git.

Репозиторий Git — хранилище, в котором находится проект и его история, включая коммиты и ветки.

Локальный репозиторий — репозиторий, который находится на локальном компьютере разработчика. Именно в нём происходит разработка и фиксация изменений, которые отправляются на удалённый репозиторий.

Удалённый репозиторий — репозиторий, который находится на удалённом сервере. Это общий репозиторий, в который приходят все изменения и откуда забираются все обновления.

Клонирование (Clone) — скачивание репозитория с удалённого сервера на локальный компьютер. Коммит (Commit) — фиксация изменений и их запись в репозиторий.

Ветка (Branch) — это параллельная версия репозитория. Она включена в репозиторий, но не влияет на главную версию, тем самым позволяя работать с ней параллельно. После того как были внесены нужные изменения, можно объединить ветку с главной версией.

Мастер (master, main) — основная ветка репозитория, появляется автоматически при создании репозитория.

Пул (Pull) — получение последних изменений с удалённого сервера репозитория.

Пуш (Push) — отправка всех неотправленных коммитов на удалённый сервер репозитория.

Мёрдж реквест (Merge request) — запрос на принятие изменений для слияния веток.