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

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

Есть минимум восемь причин использовать Git:
Контроль изменений. Можно видеть, кто, когда и что менял, не «поднимая» при этом весь код. При необходимости легко откатить неудачные правки.
Совместная работа. Несколько человек могут независимо работать над одним проектом, не мешая друг другу.
Безопасность проекта. История версий хранится не только на сервере, но локально. Это гарантирует, что данные не пропадут в случае сбоя.
Удобное тестирование идей. Можно создать свою ветку, попробовать новую идею и при необходимости удалить изменения без вреда для основного кода.
Простое восстановление. Если что-то в локальной версии пошло не так, можно быстро вернуться к рабочему состоянию проекта.
Синхронизация между компьютерами. Можно работать офлайн на своем устройстве, затем синхронизировать изменения с общей версией на сервере.
Прозрачность работы. Вся история версий видна, поэтому команде удобно анализировать процесс работы и причины изменений.
Интеграция с другими инструментами разработки. Git поддерживается всеми популярными системами CI/CD, платформами для командной работы и средами IDE.
Git — негласный стандарт в индустрии разработки. Система задействована во многих проектах, поэтому навык работы с ней будет преимуществом для каждого программиста.
Схема работы с GitУстановка Git
Для каждой ОС есть свой алгоритм установки системы. Рассмотрим порядок действий для основных.
Установка на Windows
Для установки Git в операционной системе Windows используется официальный установщик Git для Windows, который уже включает Git Bash и другие необходимые утилиты.
Как действовать:
Загрузите исполняемый файл (.exe) с официального сайта.
Запустите на компьютере загруженный файл и примите лицензионное соглашение.
Оставьте предложенные компоненты по умолчанию (включая Git Bash Here и Git GUI Here), если нет причин их менять.
На этапе настройки среды командной строки выберите «Git from the command line and also from 3rd-party software». Это позволит использовать команды git как в Git Bash, так и в стандартных терминалах Windows (CMD или PowerShell).
Выберите подходящий способ преобразования окончаний строк, чтобы обеспечить совместимость между разными ОС.
Выберите терминал, например, MinTTY. Он рекомендуется для Git Bash по умолчанию.
Установка на Mac
Git на macOS может быть уже установлен как часть Xcode Command Line Tools. Чтобы это проверить, выполните команду:
Если Git не найден, macOS предложит установить пакет для разработчиков — Xcode Command Line Tools. Git на macOS можно загрузить через через менеджер пакетов Homebrew.
Команда:
Установка в Linux
Linux Git можно установить через терминал с помощью встроенного пакетного менеджера дистрибутива. Этот способ гарантирует, что вы получите стабильную версию системы.
Команда для Ubuntu:
Команда для дистрибутивов Fedora/CentOS/RHEL:
Здесь для установки используется пакетный менеджер DNF.
Настройка Git
Чтобы работать с системой контроля версий, нужно указать идентификационную информацию и выбрать текстовый редактор.
Начальная конфигурация
Перед началом использования Git настройте имя пользователя и адрес электронной почты, которые будут привязаны к вашим коммитам. Это нужно сделать правильно, поскольку данные не получится изменить после выполнения коммитов.
Введите в терминале следующие команды:
Флаг --global позволяет установить эти параметры для всех репозиториев на вашем компьютере. Если хотите настроить для конкретного репозитория другие параметры, уберите флаг.
Настройка редактора по умолчанию
Git использует текстовый редактор для написания сообщений к коммитам и слияниям, редактирования описаний. Можно выбрать любой совместимый с системой инструмент. По умолчанию Git использует редактор Vim.
Команда для установки редактора:
Примеры редакторов, которые можно установить:
Vim — мощный, достаточно сложный для новичков редактор, который часто используется по умолчанию в Unix-подобных системах, включая Git Bash.
Nano — простой, понятный и минималистичный редактор командной строки.
VSCode — графический редактор от Microsoft. Он немного весит, легко устанавливается, быстро работает, обладает большим количеством расширений для Git.
Sublime Text — легковесный, быстрый редактор с поддержкой расширений для работы с Git.
Редактор | Описание | Преимущества | Недостатки |
Vim | Мощный текстовый редактор с богатым функционалом и возможностью кастомизации | Много плагинов и инструментов | Сложный в освоении, не подойдет для новичков |
Nano | Простой редактор, который обычно используется в терминале | Легкий в использовании, подходит для новичков | Меньше функций по сравнению с другими редакторами |
VSCode | Современный редактор с множеством расширений для поддержки Git и других инструментов разработки | Расширяемость, поддержка Git и интуитивно понятный интерфейс | Может быть «тяжелым» для слабых машин, потребляет много ресурсов |
Sublime Text | Легковесный и быстрый текстовый редактор с возможностью установки плагинов | Высокая производительность, поддержка Git | Предлагает бесплатную оценочную версию без ограничений по времени, но легальное продолжение использования требует покупки лицензии. |
Пример команды, если вы выбрали VSCode:
Параметр --wait заставляет редактор подождать, пока вы закроете текущее окно. Только после этого операция Git может быть продолжена.
Базовые команды Git
Эти команды должны знать все пользователи Git. Они помогут создавать новые репозитории и отслеживать изменения в существующих.
Создание нового репозитория
Чтобы работать с Git для отслеживания изменений в проекте, нужно создать новый репозиторий с помощью init.
Откройте Git Bash и перейдите в корневой каталог вашего проекта с помощью команды cd (например, cd/c/Projects/MyProject). Дальше выполните git init.
Внутри папки проекта будет создана подпапка с именем .git. Она содержит всю базу данных Git, включая историю версий, настройки и объекты. Теперь рабочая директория готова к отслеживанию изменений.
Работа с существующими репозиториями
Если ваш проект разрабатывается на GitHub или GitLab, использовать git init не нужно. Для загрузки копии удаленного репозитория на локальный компьютер применяется команда git clone. Как это выглядит:
Git создает новую папку с именем существующего репозитория, скачивает туда все файлы и историю версий.
Чтобы получать последние изменения из удаленного репозитория и автоматически сливать их с локальной веткой, применяется команда git pull. Выполняйте ее перед продолжением работы над проектом, чтобы убедиться, что ваша локальная копия актуальна.
Можно пойти более сложным путем и выполнить две команды: git fetch для загрузки изменений и git merge для их слияния с вашей версией.
Определение состояния и фиксация изменений
Команда git status — основной инструмент для отслеживания состояния рабочего каталога. Команда покажет, на какой ветке вы находитесь, какие файлы менялись и какие готовы к коммиту.
Прежде чем менять конкретный файл, его нужно подготовить с помощью git add. Это выглядит так:
Чтобы сохранить изменения в историю репозитория, воспользуйтесь командой commit. Затем нужно снова проверить состояние с помощью git status. Команда позволит увидеть, что именно изменилось.
Управление удаленными репозиториями
Умение управлять удаленными репозиториями в Git — важный навык для любого разработчика. Он позволяет правильно синхронизировать изменения и поддерживать актуальные версии проекта на нескольких устройствах. Разберем ключевые команды для управления.
Подключение удаленного репозитория и отправка изменений
Чтобы доставить изменения в удаленный репозиторий, сначала укажите системе, где он находится. Обычно удаленный репозиторий по умолчанию называется origin, если вы не задавали другое имя.
Чтобы увидеть, какие удаленные репозитории настроены для проекта, выполните команду:
Если вы начали проект локально с помощью git init и только что создали репозиторий на хостинге, нужно подключить его:
Например, это может выглядеть так:
Отправка изменений
Команда git push передает ваши локальные коммиты на указанный удаленный сервер:
Например, команда для отправки изменений с локальной ветки main на сервер origin выглядит так:
При первом использовании для новой ветки можно применить флаг -u. Например, git push -u origin main. Так вы установите связь между своей веткой и удаленной. В будущем для отправки изменений можно использовать просто git push.
Загрузка изменений из удаленного репозитория в локальный
Для загрузки обновлений из удаленного репозитория в локальный используются две команды — git fetch и git pull.
Начнем с git fetch. Она загружает все новые коммиты, теги и ветки из удаленного репозитория и сохраняет их в вашем. Изменения не затрагивают вашу текущую рабочую ветку и локальные файлы. Команда подойдет, если вы хотите посмотреть изменения в удаленном репозитории, но пока не готовы интегрировать их в свою версию.
Пример: git fetch origin. Вы увидите, что изменилось в ветке origin.
Команда git pull полезна для быстрой синхронизации изменений. Новые данные загружаются из удаленного репозитория и автоматические сливаются с вашей веткой. Перед выполнением команды убедитесь, что локальная версия готова к принятию изменений.
Пример: git pull origin main загружает изменения из удаленной ветки (origin/main) и сливает их в текущую локальную ветку.
Ветвление и слияние
Работа с ветками (branching) — это фундаментальный принцип Git, который позволяет разработчикам работать над функциями независимо друг от друга.
Создание и переключение между ветками
Ветка в Git — это указатель на определенный коммит в истории изменений. Основная ветка по умолчанию называется master или main.
Чтобы создать новую ветку, оставаясь в текущей, используйте команду:
Чтобы увидеть список всех веток и определить, где вы находитесь, используйте:
Текущая ветка будет отмечена значком *.
Переключение между ветками
Чтобы начать работу в новой ветке, нужно переместить на нее указатель HEAD.
HEAD — это указатель, который ссылается на текущую ветку. Когда вы переключаетесь на новую ветку, HEAD обновляется, чтобы указывать на эту ветку.
Переключиться на уже существующую ветку помогут команды:
Если нужно создать новую ветку и сразу на нее переключиться, примените:
После переключения на другую ветку файлы в вашей локальной директории обновятся.
Слияние веток
Слияние — процесс автоматического объединения изменений в локальной ветке с изменениями в целевой ветке. Выполняется с помощью команды git merge.
Представим, что вам нужно объединить изменения в вашей ветке origin с изменениями в main. Как действовать:
Переключитесь на целевую ветку: git checkout main.
Получите последние изменения: git pull origin main.
Выполните слияние, указав имя ветки, из которой нужно взять изменения:
Если целевая ветка main не менялась с тех пор, как вы создали свою ветку, Git просто передвинет указатель main на последний коммит вашей ветки origin. Коммит слияния в таком случае не создается. При этом заставить Git создать merge commit можно с флагом --no-ff.
Если в обеих ветках были новые коммиты, Git создаст новый коммит слияния — merge commit. Он объединит актуальные изменения из двух веток.
Ветки в GitРазрешение конфликтов
Иногда при работе с Git бывают конфликты слияния — merge conflict. Они возникают, когда Git не может автоматически слить изменения. Например, если два разработчика представили один и тот же участок кода по-разному. Система не может это объединить, поскольку тогда в коде возникнет ошибка.
В таких случаях Git оповещает о конфликте — выдает сообщение, что автоматическое слияние не удалось и показывает перечень конфликтующих файлов.
Чтобы проверить, какие файлы конфликтуют, выполните команду git status. Дальше откройте конфликтующий файл в текстовом редакторе и посмотрите маркеры конфликта. Они показывают, откуда пришли разные версии. Это может выглядеть примерно так:
Вручную отредактируйте файл, удалите все маркеры (<<<<<<<, =======, >>>>>>>), исправьте или объедините нужные части кода.
После исправлений сообщите Git, что конфликт разрешен:
Завершите слияние:
Если не хотите разрешать конфликт, можно отменить слияние: git merge --abort.
Полезные советы и трюки
Новичкам стоит знать еще несколько приемов для работы с Git, которые помогут исправлять ошибки и поддерживать порядок в репозитории.
Отмена и исправление изменений
Есть два способа отменить изменения — переписывание истории git reset и безопасная отмена git revert.
Git reset
Команда git reset как бы переписывает историю. Она используется, если нужно отменить изменения в вашей локальной ветке. Команда «отматывает» проект к предыдущему состоянию, как будто последних коммитов не было. Это удобно, если ошибка была обнаружена сразу, и коммиты еще не отправлены в общий репозиторий.
Команда git reset применяется, когда нужно удалить один или несколько последних коммитов, хочется переделать конкретный коммит или объединить коммиты в один. Опция используется только для локальной работы. Ее нельзя применять, если изменения уже отправлены на общий сервер. В таком случае из-за переписанной истории у других участников проекта могут возникнуть конфликты версий.
Git revert
Команда git revert не стирает старую историю, а создает новый коммит, который отменяет изменения предыдущего. Таким образом, история сохраняется полностью, и проект остается целостным.
Опция полезна, когда нужно отменить конкретное изменение, не нарушая историю проекта либо изменить коммит, который уже отправлен в общий репозиторий. Например, вы случайно добавили неправильный код. Команда git revert создаст новый коммит, который отменит изменения. При этом все предыдущие коммиты будут видны.

Работа с файлом .gitignore
Файл .gitignore позволяет указать, какие файлы и папки не будут отслеживаться. Он помогает поддерживать чистоту репозитория.
Создайте файл с именем .gitignore в корневой папке вашего репозитория. Пропишите строки-шаблоны для исключения папок и файлов. Примеры шаблонов — в таблице.
Шаблон | Назначение | Примеры |
имя_файла.txt | Исключить конкретный файл в любой директории | my_password.txt |
/папка/ | Исключить папку, которая находится в корне репозитория | /node_modules/ |
*.log | Исключить все файлы с указанным расширением | *.log, *.bak |
папка/ | Исключить указанную папку в любой вложенной директории | bin/, temp/ |
!файл.txt | Отменить исключение для конкретного файла, даже если он совпадает с шаблоном выше | !index.js (если исключен весь *.js) |
Что можно включить в .gitignore:
файлы, которые генерируются автоматически, например, скомпилированный код, .class, .dll;
специфические настройки среды разработки, например, папки .vscode, .idea;
файлы с конфиденциальной информацией — ключи API, данные для доступа к базам;
временные файлы и кэши в таких папках, как node_modules, logs.
Если хотите исключить файл, который уже закоммичен в репозиторий, сначала его удалите его из индекса с помощью команды:
После этого добавьте файл в .gitignore и создайте новый коммит.
Пример .gitignoreПодсказка для новичков — все основные команды
В таблице мы собрали команды, о которых говорили в статье и несколько дополнительных опций, полезных для новичков.
Команда | Описание | Пример использования |
git init | Создает новый репозиторий Git | git init |
git clone | Клонирует удаленный репозиторий на локальный компьютер | git clone https://github.com/example/repo.git |
git status | Показывает текущее состояние репозитория (неиндексированные изменения, файлы для коммита) | git status |
git add | Добавляет файл в индекс, то есть готовит к коммиту | git add index.html |
git commit -m " | Создает новый коммит с добавленными изменениями | git commit -m "Добавлены изменения в index.html" |
git log | Показывает историю коммитов репозитория | git log |
git diff | Показывает изменения между рабочей директорией и индексом или между коммитами | git diff |
git pull | Получает изменения из удаленного репозитория и автоматически сливает их в текущую ветку | git pull origin main |
git push | Отправляет локальные изменения в удаленный репозиторий | git push origin main |
git branch | Показывает список всех веток в репозитории | git branch |
git branch | Создает новую ветку с указанным именем | git branch feature/new-feature |
git checkout | Переключает на нужную ветку | git checkout feature/new-feature |
git checkout -b | Создает новую ветку и сразу переключается на нее | git checkout -b feature/new-feature |
git merge | Сливает указанную ветку в текущую | git merge feature/new-feature |
git fetch | Получает обновления из удаленного репозитория, но не сливает их автоматически | git fetch origin |
git remote -v | Показывает список удаленных репозиториев, привязанных к текущему локальному репозиторию | git remote -v |
git remote add | Добавляет новый удаленный репозиторий | git remote add origin https://github.com/example/repo.git |
git reset | Убирает файл из индекса, но сохраняет в рабочей директории | git reset index.html |
git rm | Удаляет файл из рабочего каталога и индекса | git rm index.html |
git show | Выдает информацию о конкретном коммите | git show a1b2c3d4 |
git tag | Создает новый тег с указанным именем | git tag v1.0 |
git tag -a | Создает тег с комментарием | git tag -a v1.0 -m "First release" |
git tag | Показывает все теги в репозитории | git tag |
git stash | Сохраняет изменения во временном хранилище и делает откат в рабочей директории до последнего коммита | git stash |
git stash apply | Восстанавливает изменения из временного хранилища в текущую рабочую директорию | git stash apply |
git stash pop | Восстанавливает изменения и удаляет их из временного хранилища | git stash pop |
git config | Настроить параметры: имя пользователя, email и другие | git config --global user.name "John Doe" |
git config --global user.email " | Настраивает адрес электронной почты для всех репозиториев | git config --global user.email "email@example.com" |
git config --list | Показывает все глобальные и локальные настройки Git | git config --list |
Заключение
Знание команд для Git позволит ускорить работу — вы будете действовать
«на автомате», не задумываясь, когда и какую опцию выбрать. На первых порах достаточно информации, которую мы дали в статье.
Основы работы с репозиториями Git универсальны и работают с любым хостингом: будь то облачные платформы GitHub и GitLab или российские решения для командной разработки. Если вы ищете комплексное решение, которое объединяет управление версиями, CI/CD, тестирование и развертывание в одной платформе, обратите внимание на Advanced CodeArts от Cloud.ru — это многофункциональный сервис для полного цикла разработки IT-продуктов. Он позволяет командам разработчиков, QA и DevOps-инженеров работать в единой среде, ускоряя вывод продукта на рынок и упрощая процессы интеграции и развертывания.
