Git и GitHub: в чём разница и как они связаны
Git — это программа контроля версий, которая работает на вашем компьютере и хранит историю изменений проекта. GitHub (гит хаб) — облачный сервис, где хранятся Git-репозитории, плюс инструменты для командной работы: pull request, ревью кода, задачи, CI. Git можно использовать без GitHub, а GitHub без Git — нет.
Git и GitHub путают постоянно, хотя это вещи разного уровня. Git — программа контроля версий, которую вы устанавливаете на компьютер: она запоминает каждое сохранённое состояние проекта и позволяет к нему вернуться. GitHub — веб-сервис, на котором хранятся копии Git-репозиториев и вокруг которых построены инструменты командной работы. Проще всего запомнить так: Git — это движок, а гит хаб — гараж с сервисом, куда этот движок можно поставить.
Что такое Git
Git — распределённая система контроля версий. Её создал Линус Торвальдс в 2005 году для разработки ядра Linux, и с тех пор она стала стандартом индустрии. Git работает полностью локально: история изменений хранится в скрытой папке .git внутри проекта, и для большинства операций интернет не нужен.
Слово «распределённая» здесь ключевое. У каждого участника проекта на компьютере лежит полная копия репозитория со всей историей, а не только последние файлы. Если сервер пропадёт, проект можно восстановить с любой рабочей машины.
Что умеет Git сам по себе:
- фиксировать изменения коммитами — снимками проекта с автором, датой и описанием;
- показывать, кто, когда и зачем поменял конкретную строку (
git log,git blame); - вести параллельные линии разработки в ветках и сливать их;
- откатывать ошибки, не теряя остальную работу;
- обмениваться историей с другими репозиториями через
git push,git pullиgit fetch.
Git — это консольная утилита. Графические клиенты и встроенные в редакторы панели (VS Code, IntelliJ IDEA) — всего лишь оболочки над теми же командами.
Что такое GitHub (гит хаб)
GitHub — облачная платформа для хостинга Git-репозиториев, сейчас принадлежит Microsoft. Вы создаёте там репозиторий, отправляете в него свой локальный код командой git push, и он становится доступен коллегам, работодателю или всему интернету, если репозиторий публичный.
Но ценность гит хаба не только в хранении. Вокруг репозитория GitHub добавляет то, чего в самом Git нет:
- Pull request — запрос на слияние ветки с обсуждением и ревью кода построчно;
- Issues — задачи и баг-репорты, привязанные к проекту;
- GitHub Actions — CI/CD: автоматический запуск тестов, сборки и деплоя при каждом push;
- управление доступом — кто может читать, писать, сливать в защищённые ветки;
- профиль разработчика — график активности и публичные проекты, которые смотрят рекрутеры;
- GitHub Pages — бесплатный хостинг статических сайтов прямо из репозитория.
Запросы вроде «git com» и «git hub» обычно означают именно этот сервис — его адрес github.com. Официальный сайт самого Git — git-scm.com, оттуда скачивают установщик.
Git и GitHub: сравнение в таблице
| Критерий | Git | GitHub |
|---|---|---|
| Что это | Программа контроля версий | Веб-сервис для хостинга репозиториев |
| Где работает | На вашем компьютере | В облаке, через браузер и API |
| Нужен ли интернет | Нет, кроме обмена с удалёнными репозиториями | Да |
| Лицензия | Открытый код (GPLv2), бесплатно | Проприетарный сервис, есть бесплатный и платные тарифы |
| Интерфейс | Командная строка, GUI-клиенты | Сайт, приложение GitHub Desktop, CLI gh |
| Главная задача | История версий, ветки, слияния | Совместная работа, ревью, CI, публикация кода |
| Можно ли без другого | Да, полностью | Нет, GitHub построен на Git |
Как Git и GitHub работают вместе
Связь между ними — это remote, удалённый репозиторий. Локальный репозиторий хранит адрес репозитория на GitHub под коротким именем, по умолчанию origin. Дальше обмен идёт тремя командами:
git push— отправить свои новые коммиты на сервер;git fetch— скачать чужие коммиты, но не трогать ваши файлы;git pull— скачать и сразу влить изменения в текущую ветку (по сутиfetch+mergeилиrebase).
Важно: GitHub не видит ваш код, пока вы его не отправили. Коммит существует только локально до первого git push. Отсюда частая ошибка новичков — «я закоммитил, а на гитхабе ничего нет».
Типичный путь: от локального проекта до GitHub
# 1. Создаём репозиторий локально
cd my-project
git init
git add .
git commit -m "Первый коммит"
# 2. Создаём пустой репозиторий на github.com (без README),
# копируем его адрес и подключаем как remote
git remote add origin git@github.com:username/my-project.git
# 3. Переименовываем ветку в main и отправляем
git branch -M main
git push -u origin main
Флаг -u (полная форма --set-upstream) связывает локальную ветку main с удалённой. После этого достаточно писать просто git push и git pull без аргументов.
Обратный путь: начать с репозитория на GitHub
Если проект уже лежит на гит хабе, его не создают заново, а клонируют:
git clone https://github.com/username/my-project.git
cd my-project
Команда скачает всю историю и автоматически настроит remote origin.
Аутентификация: SSH или HTTPS
С 2021 года GitHub не принимает пароль от аккаунта при работе через Git по HTTPS. Есть два рабочих варианта.
HTTPS + Personal Access Token. Токен создаётся в настройках аккаунта (Settings → Developer settings) и вводится вместо пароля. Чтобы не вводить его каждый раз, Git использует менеджер учётных данных — на Windows он ставится вместе с Git for Windows.
SSH-ключи. Вариант, который работодатели ожидают, что вы умеете настроить сами:
# Генерируем ключ
ssh-keygen -t ed25519 -C "you@example.com"
# Выводим публичную часть и добавляем её на GitHub:
# Settings → SSH and GPG keys → New SSH key
cat ~/.ssh/id_ed25519.pub
# Проверяем соединение
ssh -T git@github.com
При успехе GitHub ответит приветствием с вашим логином и пояснением, что shell-доступ не предоставляется, — это нормально. Адрес репозитория при этом нужно использовать в формате git@github.com:user/repo.git, а не https://.
Если репозиторий уже подключён по HTTPS, переключить его на SSH можно одной командой:
git remote set-url origin git@github.com:username/my-project.git
GitHub, GitLab и другие: в чём разница
GitHub — не единственный хостинг для Git. Все они работают с одним и тем же Git, поэтому репозиторий можно перенести с одного на другой без потери истории. Различаются они набором инструментов вокруг кода.
| Сервис | Особенности | Когда выбирают |
|---|---|---|
| GitHub | Крупнейшее сообщество open source, GitHub Actions, Copilot | Портфолио, открытые проекты, большинство стартапов |
| GitLab (гит лаб) | Встроенный CI/CD «из коробки», можно развернуть на своём сервере (self-hosted) | Компании, которым нужен код внутри своей инфраструктуры |
| Bitbucket | Интеграция с Jira и продуктами Atlassian | Команды, живущие в экосистеме Atlassian |
| Gitea, Forgejo | Лёгкие self-hosted решения с открытым кодом | Небольшие команды, домашние серверы |
В GitLab запрос на слияние называется merge request, в GitHub — pull request, но суть одна: предложить изменения из ветки и обсудить их перед слиянием. Терминология разная, Git-команды — одинаковые.
В одном локальном репозитории можно держать несколько remote сразу, например зеркалировать проект и на GitHub, и на GitLab:
git remote add gitlab git@gitlab.com:username/my-project.git
git push gitlab main
git remote -v
Нужен ли GitHub, если я работаю один
Технически нет: Git отлично работает локально. Но у удалённого репозитория даже для одиночного проекта есть три весомых плюса.
- Резервная копия. Сломался ноутбук — код и вся история целы на сервере.
- Работа с нескольких устройств. Дома и в офисе вы синхронизируетесь через
pushиpull. - Портфолио. При отборе на junior-позиции профиль на гит хабе часто смотрят раньше резюме: есть ли живые проекты, осмысленные сообщения коммитов, README.
С чего начать новичку
Учить Git и GitHub одновременно не нужно — порядок важен. Сначала освойте локальный цикл: git init, git status, git add, git commit, git log, ветки и слияние. Когда это работает без подсказок, регистрируйтесь на гит хабе, настраивайте SSH и учитесь push, pull, fetch. Последний шаг — командный процесс: форк, ветка под задачу, pull request, ревью.
Что работодатель смотрит в вашем GitHub
Зелёные квадратики активности — не главное. Опытный ревьюер за пару минут оценивает другое:
- понятные сообщения коммитов вместо «fix», «123», «правки»;
- небольшие логичные коммиты, а не один гигантский «залил проект»;
- README с описанием, как запустить проект;
- файл
.gitignore: в репозитории нетnode_modules,.envс паролями, файлов IDE; - ветки и pull request даже в учебных проектах — это показывает, что вы знакомы с командным процессом.
Типичные ошибки новичков
«fatal: not a git repository»
Вы запускаете команду Git вне репозитория. Перейдите в папку проекта или выполните git init. Регистрация на GitHub здесь ни при чём — это локальная ошибка Git.
«Permission denied (publickey)»
SSH-ключ не создан, не добавлен на GitHub или не загружен в ssh-agent. Проверьте ssh -T git@github.com и список ключей в настройках аккаунта.
«rejected … (fetch first)» при push
На сервере есть коммиты, которых нет у вас, — например, вы создали репозиторий на GitHub с README. Сначала заберите изменения: git pull --rebase origin main, затем повторите git push. Не используйте --force, пока не понимаете, чью работу перезапишете.
Секреты в публичном репозитории
Пароль или API-ключ, однажды попавший в коммит, остаётся в истории, даже если файл потом удалить. Такой ключ нужно немедленно перевыпустить, а .env добавить в .gitignore заранее.
Итог
Git — инструмент контроля версий на вашем компьютере, гит хаб — сервис, где эти репозитории живут в облаке и где вокруг них строится командная работа. GitLab, Bitbucket и другие — альтернативы GitHub, а не Git: под капотом у всех одни и те же коммиты, ветки и команды. Начинайте с локального Git, затем подключайте remote и настраивайте SSH. Связка локального репозитория с GitHub, push, pull и fetch разобраны на практике в курсе по Git.
Частые вопросы
GitHub бесплатный?
Да, бесплатный тариф позволяет создавать неограниченное число публичных и приватных репозиториев. Платные тарифы добавляют расширенные функции для команд и больше минут GitHub Actions для приватных проектов.
Можно ли пользоваться GitHub без командной строки?
Да, через GitHub Desktop или встроенные Git-панели редакторов. Но эти инструменты вызывают те же команды Git, и понимать их всё равно полезно, особенно при конфликтах.
Нужно ли устанавливать Git, если есть аккаунт на GitHub?
Да. Аккаунт даёт место для хранения, а работать с кодом локально — делать коммиты, ветки, push — вы будете через установленный Git.
Как перенести репозиторий с GitHub на GitLab?
Добавьте новый remote и отправьте все ветки и теги: git push gitlab --all и git push gitlab --tags. История переносится полностью, потому что оба сервиса работают на Git.
Чем публичный репозиторий отличается от приватного?
Публичный видят все в интернете, приватный — только вы и приглашённые участники. Для портфолио нужны публичные репозитории.
Эта тема подробно разобрана с практикой в курсе «Git с нуля до уверенного разработчика».
- Зачем вообще нужен Git — и почему без него не берут на работу
- GitHub и удалённые репозитории: ваш код в облаке