Программирование  •  26 июня  2023  •  5 мин чтения

Что такое Git и для чего он нужен программистам

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

Что такое Git

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

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

Рассмотрим, как это работает, на примере.

Есть проект, в котором пишется код. В нём создано окружение Git ― все изменения файлов отслеживаются в рамках настроенных параметров и заданных фильтров. Нужно добавить в проект новую функцию, изменив или доработав существующий код. Для этого потребуется создать внутри проекта отдельную ветку — в Git они называются branch. Работа в этой ветке никак не затрагивает основной код — если с новыми изменениями что-то пойдёт не так и код станет невалидным и перестанет запускаться, основной проект не пострадает. А когда новая функция будет дописана и протестирована, ветку можно будет «наложить» на основной код.

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

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

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

Git может быть локальным, централизованным или распределённым:

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

Распределённая система лучше всего подходит для командной работы. Даже если с центральным хранилищем что-то случится, проект можно восстановить из копий участников команды.

Удобство и гибкость сделали Git стандартом для большинства современных IT-компаний. Поэтому умение работать с ним критично для любого программиста. Но разобраться с ним можно только на практике, работая в связке с другими разработчиками. Этим в том числе занимаются студенты Практикума на курсе «Фронтенд-разработчик».

Принципы работы с Git

При работе с Git в среде разработчиков принято руководствоваться тремя принципами:

1. Регулярно коммитить ― сохранять изменения в Git. Такой подход позволит сохранять более подробную историю версий и быстро замечать ошибки в коде.
2. Создавать новые ветки. Они позволяют легко управлять изменениями, особенно параллельными. Лучше создать ещё одну ветку, чем что-то испортить в старой.
3. Чётко и лаконично описывать коммиты. Изменения кода, которые отправляются в Git, обязательно должны содержать пояснения и комментарии по добавленным правкам, доработкам и изменениям. Это значительно облегчает совместную работу и помогает быстрее разбираться в своем старом коде.

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

Начало работы с Git: установка и настройка

Установить систему контроля версий Git можно по алгоритму:

1. Перейти на страницу загрузки Git.
2. Скачать дистрибутив для нужной операционной системы.
3. Запустить установочный файл и следовать инструкциям на экране.
4. После завершения установки открыть терминал или командную строку и ввести команду git --version. Если Git правильно установлен, отобразится версия Git.

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

В настоящее время для операционных систем *nix/linux (MacOS, Debian, Fedora, Ubuntu, etc) система контроля версий Git чаще поставляется уже предустановленной.
Чтобы его настроить, нужно:

1. Ввести команды git config --global user.name "Your Name" и git config --global user.email "youremail@example.com". Это установит параметры автора коммитов.
2. Настроить редактор кода, используя команду git config --global core.editor "editor-name". Вместо editor-name следует ввести свой редактор кода. По умолчанию Git использует Vim.
3. Проверить настройки с помощью команды git config --list.

Также для работы потребуется создать репозиторий в Git. Это можно сделать по схеме:

1. Создать пустую директорию на диске.
2. Перейти в созданную папку и запустить терминал.
3. Инициализировать репозиторий командой git init. После выполнения этой команды в директории появится скрытая папка .git
4. Добавить в репозиторий файлы командой git add. После указанной команды выбранные файлы перейдут в статус «отслеживаемых» и можно будет увидеть производимые с ними изменения ― удаление, перемещение, переименование и изменения содержимого файлов.
5. Создать первый коммит командой git commit -m "Initial commit".
6. Создать ветку в Git командой git branch <название_ветки>

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

«Джентльменским набором» для работы в Git можно считать набор команд:

git commit — фиксация изменений
git diff — просмотр актуальных или предыдущих изменений в рамках работы над репозиторием
git checkout — переход на предыдущее состояние или ветку
git push/pull — отправка и получение изменений из удалённого репозитория
git stash — сохранение изменений в архив для последующего использования

Что такое репозиторий Git

Репозиторий — это место, в котором хранится весь код и вся история его изменений. По сути это просто папка, однако она связана с Git напрямую и содержит файлы в понятном для Git формате. Кроме того, для папки, заявленной как репозиторий, Git формирует историю изменений.

Репозиторий может быть локальным ― храниться на компьютере пользователя. А может быть удалённым — лежать на сервере или в облачном хранилище. В таком случае пользователи со своих устройств подключаются к этому репозиторию через интернет.

Зачем нужен GitHub

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

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

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

Так выглядит интерфейс GitHub и репозиторий в нем. Это открытый репозиторий, в котором можно просматривать чужой код, его ветки, коммиты, вопросы и комментарии
Альтернативами GitHub являются GitLab и Bitbucket, но ими пользуются реже.

Совет эксперта

Николай Федосеев
Понимание работы и навык практического применения системы контроля версий (VCS) — обязательное требование к любому специалисту, работающему не только с кодом, но и с любой системой или проектом, который содержит механизм версионирования и постоянных изменений.

Использование VCS упрощает работу как одного, так и целой команды разработчиков. С ней проще поддерживать различные типы окружения для проекта: тестирование, исследование, продукт и т.п. Также VCS облегчает изучение возникших проблем или анализ развития системы с течением времени.

Статью подготовили:
Яндекс Практикум
Education Mentor,
SDE в PlayCanvas
Яндекс Практикум
Редактор
Анастасия Павлова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться
Идеи новогодних подарков от нейросети + промокоды на курсы Практикума и акции от партнеров
Tue Oct 15 2024 10:01:42 GMT+0300 (Moscow Standard Time)