Найти в Дзене
Мечты об удаленке

Git и GitHub: исчерпывающее руководство для начинающих

Оглавление

Взято из открытых источников.
Взято из открытых источников.

В мире современной разработки программного обеспечения сложно представить себе работу без систем контроля версий. О них и поговорим в этой статье!

Если вы начинающий программист, который только слышал загадочные слова «Git», «коммит» или «пулл-реквест», но не до конца понимаете, что они означают и как этим пользоваться, это руководство для вас.

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

Git и GitHub - в чем принципиальная разница?

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

Git — это инструмент. GitHub — это сервис.

Представьте себе аналогию:

  1. Git — это двигатель и коробка передач в вашем автомобиле. Это мощная, сложная система, которая управляет самой сутью движения — оборотами, скоростью, передачей мощности на колеса.
  2. GitHub — это современный, комфортный гараж с мастерской, парковкой для вашего автомобиля и клубом по интересам. Вы можете хранить там свою машину (код), пригласить друзей-механиков (других разработчиков), чтобы они помогли вам ее улучшить, и перенять опыт у других автолюбителей.

Технически:

  1. Git — это распределенная система контроля версий (VCS), созданная Линусом Торвальдсом для разработки ядра Linux. Она работает локально на вашем компьютере. Вы можете использовать Git без интернета и без GitHub, ведя историю изменений исключительно на своей машине.
  2. GitHub — это облачная платформа, построенная вокруг Git. Она предоставляет хостинг для ваших Git-репозиториев (хранилищ кода), а также множество социальных и collaborative-инструментов: веб-интерфейс, систему Pull Requests, Issues (задачи), Wiki, проекты и многое другое.

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

Философия Git: снимки, а не различия

Взято из открытых источников.
Взято из открытых источников.

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

Каждый раз, когда вы сохраняете состояние своего проекта в Git (делаете так называемый «коммит»), система по сути фотографирует все файлы в тот момент и сохраняет ссылку на этот снимок.

Если файл не изменился, Git не хранит его снова, а просто создает ссылку на предыдущий идентичный файл. Такой подход делает операции в Git невероятно быстрыми и эффективными. И да, это чертовски удобно!!!

Ключевые понятия Git, которые нужно усвоить

Прежде чем перейти к командам, давайте определимся с терминологией.

  1. Репозиторий (Repository, или просто «репо») — это хранилище вашего проекта вместе со всей его историей изменений и служебной информацией. Он может быть локальным (на вашем компьютере) и удаленным (на GitHub).
  2. Коммит (Commit) — это основной объект в Git, представляющий собой снимок состояния вашего проекта в определенный момент времени. Коммит имеет уникальный хеш-идентификатор, автора, сообщение (которое вы пишете), описывающее внесенные изменения, и ссылку на предыдущий коммит(ы).
  3. Ветка (Branch) — это подвижный указатель на один из коммитов. По умолчанию, все репозитории начинаются с ветки с именем main (ранее master). Ветки нужны для изоляции функциональности. Вы можете создать новую ветку для разработки новой фичи или исправления бага, не затрагивая стабильную основную версию кода. Это сердце мощных workflow в Git.
  4. Слияние (Merge) — это операция объединения изменений из разных веток. Когда вы закончили работу в своей feature-ветке, вы сливаете ее обратно в main.
  5. Удаленный репозиторий (Remote) — это версия вашего проекта, хранящаяся в интернете или другой сети (например, на GitHub). Вы можете иметь несколько удаленных репозиториев, но стандартное имя для основного — origin.
  6. Клонирование (Clone) — команда для создания локальной копии удаленного репозитория.
  7. Пуш (Push) — отправка ваших локальных коммитов в удаленный репозиторий.
  8. Пулл (Pull) — загрузка последних изменений из удаленного репозитория и их автоматическое слияние с вашей локальной рабочей копией.

Базовый рабочий цикл для начинающего

Взято из открытых источников.
Взято из открытых источников.

Опишем типичную последовательность действий при работе над проектом с использованием Git и GitHub.

Шаг 1: Настройка


Скачайте и установите Git с официального сайта. После установки откройте терминал (командную строку) и представьтесь системе:

git config --global user.name "Ваше Имя"
git config --global user.email "your.email@example.com"


Эта информация будет вшита в каждый ваш коммит.

Шаг 2: Создание или клонирование репозитория

  1. Новый проект: Перейдите в папку вашего проекта и выполните git init. Эта команда создаст локальный репозиторий.
  2. Существующий проект с GitHub: Скопируйте URL репозитория на GitHub (кнопка "Code") и выполните git clone <URL>. Это скачает весь проект вместе с его историей.

Шаг 3: Работа и сохранение изменений (цикл коммита)


Этот цикл повторяется постоянно.

  1. Внесение изменений: Вы редактируете, создаете или удаляете файлы в вашем проекте.
  2. Добавление в область подготовленных файлов (Staging Area): Вы говорите Git, какие именно изменения вы хотите включить в следующий коммит. Это позволяет вам точно контролировать, что попадает в историю. Команда git add <имя_файла> или git add . (добавить все изменения).
  3. Создание коммита: Командой git commit -m "Ваше осмысленное сообщение" вы создаете снимок проекта. Сообщение должно быть кратким и понятным, например, "Исправлена ошибка расчета скидки в корзине".

Шаг 4: Синхронизация с GitHub


Если вы работаете с удаленным репозиторием (например, на GitHub), вам нужно синхронизировать ваши локальные изменения с ним.

  1. git push origin main — отправить ваши коммиты из локальной ветки main на удаленный репозиторий origin.
  2. git pull origin main — получить свежие обновления от других разработчиков с GitHub и автоматически объединить их с вашей локальной копией.

Ветвление — суперсила Git

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

git checkout -b new-awesome-feature

Эта команда создает ветку new-awesome-feature и сразу переключает вас на нее. Теперь вы можете работать и коммитить сколько угодно, не затрагивая main.

Когда функция готова и протестирована, вы переключаетесь обратно на main (git checkout main) и сливаете свою ветку в нее (git merge new-awesome-feature).

Зачем тогда нужен GitHub?

Взято из открытых источников.
Взято из открытых источников.

GitHub выводит работу с Git на новый уровень, добавляя так называемый коллаборационный слой. Его главные инструменты для командной работы:

  1. Pull Request (PR) или Merge Request (MR) — это краеугольный камень совместной разработки. Вместо того чтобы просто напрямую пушить в главную ветку, разработчик создает PR. Это запрос на слияние своих изменений (из своей ветки) в основную ветку. PR позволяет обсудить код, провести его ревью, запустить автоматические тесты перед тем, как изменения будут приняты.
  2. Issues — система задач и баг-трекинга. Здесь можно сообщать об ошибках, предлагать новые функции, вести списки дел.
  3. Fork и Pull Model — стандартная модель для open-source проектов. Вы «форкаете» (создаете свою полную копию) чужой репозиторий на GitHub, клонируете его себе, вносите изменения в своей копии, а затем создаете Pull Request из своего форка в оригинальный репозиторий, предлагая автору свои улучшения.

Заключение: с чего начать?

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

  1. Установите Git.
  2. Создайте аккаунт на GitHub.
  3. Потренируйтесь в создании локального репозитория, добавлении файлов и создании коммитов.
  4. Создайте репозиторий на GitHub и свяжите его со своим локальным (git remote add origin <URL>), сделайте первый push.
  5. Попробуйте создать новую ветку, сделать в ней коммит и смержить ее с main.

По мере роста вашего опыта вы будете открывать для себя все новые и новые возможности: разрешение конфликтов слияния, работу с git stash, интерактивное добавление, переписывание истории с rebase и многое другое.

Но основа, заложенная в этом руководстве, уже сделает вас на голову выше начинающего разработчика и откроет дверь в мир профессиональной разработки и open-source сообщества. Удачи в освоении!

🔔🔔🔔 Понравилась статья? Ставьте лайк и подписывайтесь на наш канал и телеграмм, в котором мы публикуем анонсы новых курсов, новости, акции и скидки на обучении более чем 50 российских онлайн-школ.
С нами вы всегда будете в курсе того, что происходит на российском рынке онлайн-образования!