Сравнение

Git и GitHub: в чём разница и как они связаны

Обновлено: · Skillaria.Top

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: сравнение в таблице

КритерийGitGitHub
Что этоПрограмма контроля версийВеб-сервис для хостинга репозиториев
Где работаетНа вашем компьютереВ облаке, через браузер и 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 с нуля до уверенного разработчика».

Перейти к курсу