Что такое Git и GitHub: руководство для начинающих
Ветвление, pull requests, merge conflicts, .gitignore — полный цикл от init до совместной работы в команде. С визуальными схемами процесса.
, отредактировано
Если вы только начинаете путь в разработке, то наверняка уже слышали слова «Git» и «GitHub» — они звучат на каждом собеседовании, в каждом туториале и в каждом open-source проекте. Но что это такое на самом деле и зачем это нужно? В этой статье разберём всё с нуля: от первой команды в терминале до создания собственного репозитория на GitHub.
Что такое Git
Git — это распределённая система контроля версий (Version Control System, VCS), которая отслеживает изменения в файлах и позволяет нескольким разработчикам работать над одним проектом одновременно. Git был создан Линусом Торвальдсом в 2005 году для разработки ядра Linux и сегодня является стандартом индустрии: по данным Stack Overflow Developer Survey, его используют около 93–95% профессиональных разработчиков. С помощью Git можно в любой момент вернуться к предыдущей версии кода, сравнить изменения и объединить работу нескольких людей с минимумом конфликтов — хотя конфликты при слиянии (merge conflicts) иногда возникают, Git помогает их разрешить.
Ключевые факты
- Git — бесплатная и открытая система контроля версий, созданная в 2005 году - Используется в более чем 93% профессиональных проектов по всему миру - GitHub — это облачный хостинг для Git-репозиториев, а не сам Git - Три состояния файла в Git: рабочая директория, staging area, репозиторий - Основные команды: git init, git add, git commit, git push, git pull - GitLab и Bitbucket — альтернативы GitHub с похожим функционалом - Первый коммит можно сделать за 5 минут после установки
Зачем нужна система контроля версий
Представьте: вы работаете над проектом и случайно удаляете важный файл или ломаете рабочий функционал. Без системы контроля версий восстановить данные практически невозможно. Именно для таких ситуаций и создавались VCS.
Вот основные задачи, которые решает Git:
- История изменений — вы видите, кто, когда и что изменил в коде
- Откат к предыдущей версии — если новый код сломал проект, достаточно одной команды
- Параллельная работа — несколько человек могут работать над разными частями проекта одновременно
- Эксперименты без риска — создайте отдельную ветку, попробуйте идею, и если не понравится — просто удалите ветку
- Резервное копирование — код хранится не только локально, но и в удалённом репозитории
Как работает Git
Git управляет файлами через три уровня. Понимание этой модели — ключ к тому, чтобы не путаться в командах и не терять изменения.
Рабочая директория (Working Directory)
Это обычная папка на вашем компьютере с файлами проекта. Здесь вы пишете и редактируете код. Git следит за изменениями, но пока не сохраняет их в историю — файлы просто находятся в состоянии «изменён» или «не отслеживается».
Staging Area (индекс)
Промежуточная зона, куда вы добавляете файлы перед сохранением. Думайте о ней как о корзине для покупок: вы выбираете нужные товары (изменения) и кладёте их туда, прежде чем оформить заказ (сделать коммит). Команда git add перемещает файлы в staging area.
Репозиторий и коммиты
Когда вы выполняете команду git commit, Git делает снимок всех файлов из staging area и сохраняет его в историю репозитория. Каждый коммит — это точка в истории проекта с уникальным идентификатором (SHA-хешем), автором, датой и сообщением. В любой момент можно вернуться к любому коммиту.
Ключевое отличие Git от большинства других VCS — распределённость. Каждый разработчик хранит полную копию репозитория со всей историей локально. Это означает, что можно работать офлайн и не зависеть от центрального сервера.
Основные команды Git
Большинство повседневных задач решается с помощью 7–10 команд. Разберём их по порядку.
git init — создать репозиторий
Инициализирует новый Git-репозиторий в текущей папке. После выполнения команды появится скрытая папка .git, в которой Git хранит всю историю. Папку .git удалять нельзя — в ней хранится вся история проекта.
git add и git status — добавить файлы в staging area
Команда git status показывает текущее состояние репозитория — какие файлы изменены, какие добавлены в staging area. Команда git add добавляет файлы в staging area.
git commit — сохранить изменения
Создаёт коммит из файлов, добавленных в staging area. Сообщение коммита должно кратко описывать, что именно изменилось. Хороший формат: глагол в повелительном наклонении + что сделано.
git push и git pull — синхронизация с удалённым репозиторием
Команда git push отправляет локальные коммиты на удалённый сервер (например, GitHub). Команда git pull загружает изменения с сервера и объединяет их с локальной версией.
git branch и git merge — ветки
Ветки — одна из самых мощных функций Git. Ветка — это независимая линия разработки. Вы можете создать ветку для новой функциональности, работать в ней, не затрагивая основной код, а потом объединить (merge) с главной веткой.
Что такое GitHub
GitHub — это облачная платформа для хостинга Git-репозиториев. Если Git — это инструмент на вашем компьютере, то GitHub — это место в интернете, где вы храните свой код и делитесь им с другими. Главная страница GitHub — github.com — основана в 2008 году и сегодня насчитывает более 100 миллионов разработчиков и свыше 420 миллионов репозиториев.
GitHub добавляет поверх Git множество удобных возможностей:
- Pull Request (PR) — предложение изменений с обсуждением кода перед слиянием
- Issues — система задач и багов прямо внутри репозитория
- Actions — автоматизация: тесты, деплой, сборка при каждом коммите
- GitHub Pages — бесплатный хостинг статических сайтов прямо из репозитория
- Discussions — форум для обсуждений внутри проекта
- Code Review — удобный интерфейс для ревью кода с комментариями к строкам
Git — это технология, а GitHub — это сервис поверх этой технологии. Можно использовать Git без GitHub (например, хранить репозиторий на собственном сервере), но нельзя использовать GitHub без Git.
Git vs GitHub vs GitLab vs Bitbucket
Разработчики часто путают эти понятия. Вот краткое сравнение четырёх основных инструментов экосистемы.
- Git — локальная система контроля версий, работает без интернета, устанавливается на компьютер
- GitHub — крупнейший хостинг для Git-репозиториев, принадлежит Microsoft с 2018 года, идеален для open-source
- GitLab — альтернатива GitHub с упором на DevOps, есть self-hosted версия, популярен в корпоративной среде
- Bitbucket — продукт Atlassian (Jira, Confluence), хорошо интегрируется с их экосистемой, популярен в командах
Для новичков рекомендуем начать с GitHub: он самый популярный, имеет лучшую документацию на русском языке и огромное сообщество. Бесплатный план включает неограниченное количество публичных и приватных репозиториев.
Как начать работать с Git: пошаговая инструкция
Следуйте этой инструкции, и через 10–15 минут у вас будет первый репозиторий на GitHub.
Шаг 1. Установка Git
- Windows: скачайте установщик с git-scm.com/download/win и запустите его
- macOS: откройте терминал и выполните brew install git (или xcode-select --install)
- Linux (Ubuntu/Debian): sudo apt install git
Шаг 2. Настройка имени и почты
Git подписывает каждый коммит вашим именем и почтой. Настройте их один раз — они будут использоваться во всех проектах.
Шаг 3. Создать аккаунт на GitHub
Перейдите на github.com, нажмите «Sign up» и заполните форму регистрации. Выберите бесплатный тарифный план — для начинающих он полностью достаточен.
Шаг 4. Создать первый репозиторий и сделать коммит
Частые вопросы
В чём разница между git merge и git rebase?
git merge объединяет две ветки, создавая коммит слияния. История сохраняется как есть, со всеми ответвлениями. git rebase «перемещает» коммиты одной ветки поверх другой, создавая линейную историю. Для новичков рекомендуем начать с git merge — он нагляднее и безопаснее.
Как отменить последний коммит?
Если коммит ещё не отправлен на сервер, используйте git reset HEAD~1 — это отменит коммит, но сохранит изменения в рабочей директории. Если нужно полностью выбросить изменения, добавьте флаг --hard. Будьте осторожны: флаг --hard необратимо удаляет все незафиксированные изменения. Если коммит уже в удалённом репозитории, безопаснее создать новый коммит с откатом через git revert HEAD.
Что такое .gitignore?
Файл .gitignore содержит список файлов и папок, которые Git должен игнорировать. Туда добавляют временные файлы, зависимости (папка node_modules/), файлы с паролями и ключами API, настройки IDE. Пример содержимого для Node.js-проекта:
Что такое Pull Request и зачем он нужен?
Pull Request (PR) — это механизм GitHub для предложения изменений. Вы делаете ветку, вносите правки, создаёте PR и просите других разработчиков проверить ваш код перед слиянием в основную ветку. PR — основа командной разработки: он позволяет обсуждать изменения, оставлять комментарии к конкретным строкам кода и поддерживать качество проекта.
Нужно ли знать терминал, чтобы работать с Git?
Терминал — самый надёжный способ работы с Git, и именно его стоит освоить в первую очередь. Однако существуют графические интерфейсы: GitHub Desktop (бесплатный, от GitHub), GitKraken, Sourcetree. Большинство редакторов кода — VS Code, JetBrains IDE — имеют встроенную интеграцию с Git. Для начала можно использовать GUI, но базовые команды в терминале всё равно пригодятся.
Выводы
Git — это не просто инструмент для разработчиков, это основа профессиональной работы с кодом. Без него невозможно представить ни командную разработку, ни open-source проекты, ни современный DevOps. Хорошая новость: базовые команды можно освоить за один вечер, а дальше — практика и опыт.
Что делать дальше:
- Установите Git и создайте аккаунт на GitHub прямо сейчас
- Сделайте первый репозиторий по инструкции из этой статьи
- Попрактикуйтесь с ветками: создайте ветку, внесите изменения, слейте в main
- Попробуйте сделать Pull Request в любой open-source проект — даже исправление опечатки в README считается
- Изучите команды git stash, git cherry-pick и git bisect — они пригодятся на следующем уровне
Знание Git сегодня — обязательное требование для любого разработчика. Если вы только начинаете — это один из первых инструментов, который нужно освоить. Если уже работаете — углубляйтесь в продвинутые возможности: rebase, stash, cherry-pick, подмодули. Подробнее о всех возможностях можно прочитать в официальной документации Git.
Git лежит в основе всей современной DevOps-экосистемы. Следующий шаг — освоить Docker для контейнеризации приложений: именно связка Git + Docker образует фундамент любого CI/CD-пайплайна. А если хотите автоматизировать тестирование и доставку кода — читайте нашу статью о том, что такое CI/CD.
Если хотите собрать из Git, Docker, CI/CD, Kubernetes и Helm единый маршрут, посмотрите план обучения DevOps-инженера. Там видно, почему Git идёт первым и как из него вырастает вся следующая цепочка инструментов.