Git для начинающих: как пользоваться Git в Linux от первого коммита до GitHub
Git для начинающих сводится к короткому циклу: правите файлы, добавляете их командой git add, фиксируете через git commit и отправляете на GitHub командой git push. Ниже установка Git в Ubuntu, Fedora и Arch, первичная настройка, основные команды с таблицей, ветки, SSH-ключ для GitHub и способы отменить ошибку без паники.

Содержание
Что такое Git и зачем он даже не программисту
Git - система контроля версий. Она хранит историю изменений файлов в каталоге: кто, когда и что поменял, и позволяет вернуться к любому сохранённому состоянию. Каждое такое сохранение называется коммитом. Вся история лежит в скрытом каталоге .git внутри проекта, сервер для работы не нужен. GitHub, GitLab, Gitea и российские GitFlic или GitVerse - это хостинги, куда удобно отправлять копию репозитория, чтобы работать с другими людьми и не потерять данные.
Git полезен не только разработчикам. В нём удобно держать конфиги (~/.bashrc, настройки редактора), заметки в Markdown, скрипты администрирования, тексты статей. Сломали что-то правкой, посмотрели разницу и откатили одной командой.
Установка Git в Linux
Git есть в репозиториях всех дистрибутивов, а на многих уже стоит. Проверьте версию и при необходимости установите:
git --version
# Debian / Ubuntu / Mint
sudo apt install git
# Fedora
sudo dnf install git
# Arch Linux
sudo pacman -S git
Версии ветки 2.x в репозиториях свежих релизов подходят для всего, что описано ниже. Если на Ubuntu LTS нужна самая новая версия, есть официальный PPA ppa:git-core/ppa, как подключать PPA, рассказано в статье про команды apt.
Первичная настройка: имя, почта, ветка по умолчанию
Прежде чем делать коммиты, представьтесь. Эти данные записываются в каждый коммит, поэтому для GitHub используйте ту же почту, что в аккаунте, или служебный адрес вида id+login@users.noreply.github.com, если не хотите светить свою.
git config --global user.name "Иван Петров"
git config --global user.email "ivan@example.com"
git config --global init.defaultBranch main
git config --global core.editor nano
git config --global --list
Настройки с ключом --global пишутся в ~/.gitconfig и действуют во всех репозиториях. Без ключа они относятся только к текущему проекту: так удобно разделить рабочую и личную почту.
Строка init.defaultBranch main заставляет новые репозитории начинаться с ветки main, как на GitHub. В Git 2.x без этой настройки ветка называется master, а при создании репозитория выводится подсказка. В Git 3.0 разработчики планируют сделать main значением по умолчанию.
Редактор нужен для длинных сообщений коммитов и разрешения конфликтов. Новичку проще nano, если вы освоились с vim, ставьте его: про основы есть статья vim для начинающих.
Как пользоваться Git: первый репозиторий и коммит
Работа с Git строится вокруг трёх мест: рабочий каталог (файлы, как вы их видите), индекс (то, что войдёт в следующий коммит) и история. Команда git add переносит изменения в индекс, git commit фиксирует индекс в истории.
mkdir ~/notes && cd ~/notes
git init
echo "# Мои заметки" > README.md
git status
git add README.md
git commit -m "Первый коммит: README"
git status - самая полезная команда для новичка. Она показывает, какие файлы изменены, какие в индексе и какие Git ещё не отслеживает, и подсказывает следующие команды. Запускайте её перед каждым add и commit.
Что изменилось и как это посмотреть
# разница между рабочим каталогом и индексом
git diff
# разница того, что уже в индексе
git diff --staged
# компактная история
git log --oneline --graph
# кто менял строку файла
git blame README.md
Файлы, которые не нужно хранить
Логи, временные файлы, каталоги сборки и, главное, пароли и токены в репозиторий попадать не должны. Перечислите их в файле .gitignore в корне проекта:
*.log
.env
node_modules/
build/
Сообщения коммитов пишите так, чтобы через полгода было понятно, что произошло: "Исправил расчёт скидки для опта" лучше, чем "fix".
Основные команды Git
| Команда | Что делает |
|---|---|
git init | Создать репозиторий в текущем каталоге |
git clone адрес | Скачать репозиторий с историей |
git status | Состояние файлов и подсказки |
git add файл / git add . | Добавить изменения в индекс |
git commit -m "текст" | Зафиксировать индекс |
git log --oneline | История коротко |
git diff | Показать незакоммиченные изменения |
git switch -c ветка | Создать ветку и перейти в неё |
git merge ветка | Влить ветку в текущую |
git pull | Забрать изменения с сервера и объединить |
git push | Отправить коммиты на сервер |
git restore файл | Отменить правки файла до последнего коммита |
git revert коммит | Создать коммит, отменяющий указанный |
git stash | Временно убрать незаконченные правки |
Справка по любой команде открывается через git help команда или man git-команда. Подробное руководство на русском есть в бесплатной книге Pro Git на официальном сайте проекта.
Ветки: работать над задачей, не ломая main
Ветка - это отдельная линия истории. В ней можно спокойно экспериментировать, а main остаётся рабочим. Когда задача готова, ветку вливают обратно.
git switch -c feature/menu
# правки, add, commit
git switch main
git merge feature/menu
git branch -d feature/menu
Команда git switch появилась как понятная замена переключению через git checkout, в старых инструкциях вы увидите git checkout -b, это то же самое. Список веток показывает git branch, текущая отмечена звёздочкой.
Конфликт при слиянии
Если одна и та же строка изменена в обеих ветках, Git остановит слияние и пометит место в файле маркерами <<<<<<<, ======= и >>>>>>>. Откройте файл, оставьте нужный вариант, удалите маркеры, затем:
git add файл
git commit
Передумали сливать и хотите вернуть всё как было: git merge --abort.
SSH-ключ для GitHub и первая отправка
Пароль от аккаунта для операций Git по HTTPS GitHub давно не принимает: нужен персональный токен или SSH-ключ. Ключ удобнее, настраивается один раз. Создайте пару ключей Ed25519:
ssh-keygen -t ed25519 -C "ivan@example.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
На вопрос о пути нажмите Enter, парольную фразу лучше задать: агент запомнит её на время сеанса, а в GNOME и KDE Plasma за это отвечает встроенное хранилище ключей. Скопируйте вывод последней команды, это публичный ключ. На GitHub откройте Settings, SSH and GPG keys, New SSH key, вставьте строку и сохраните. Приватный файл id_ed25519 без .pub не отправляйте никуда и никому.
Проверка соединения:
ssh -T git@github.com
В ответ придёт приветствие с вашим логином и пояснение, что доступа к оболочке GitHub не даёт. Это нормальный результат. Подробно о ключах, конфиге ~/.ssh/config и агенте рассказано в статье SSH-клиент в Linux.
clone и push
Существующий репозиторий скачивают по SSH-адресу, его показывает кнопка Code на странице проекта:
git clone git@github.com:login/project.git
cd project
Свой локальный репозиторий, например ~/notes, привязывают к пустому репозиторию, созданному на GitHub без README, и отправляют:
git remote add origin git@github.com:login/notes.git
git push -u origin main
# дальше достаточно
git push
git pull
Ключ -u связывает локальную ветку с удалённой, после этого push и pull работают без аргументов. Если репозиторий раньше клонировали по HTTPS, переключите его на SSH: git remote set-url origin git@github.com:login/project.git.
Как отменить ошибку в Git
Почти любую ошибку в Git можно исправить, если вы ещё не отправили изменения на сервер. Шпаргалка по частым ситуациям:
- Испортил файл, коммита ещё не было:
git restore файлвернёт его к последнему коммиту. Правки при этом пропадут насовсем. - Добавил лишний файл в индекс:
git restore --staged файл, сам файл останется. - Опечатка в последнем коммите: поправьте файлы, сделайте
git addиgit commit --amend. Только для коммитов, которые ещё не ушли в push. - Плохой коммит уже на GitHub:
git revert хешсоздаст новый коммит, отменяющий старый. Историю при этом никто не переписывает, коллеги не пострадают. - Нужно вернуться на несколько коммитов назад локально:
git reset --hard HEAD~2. Команда опасная, незакоммиченные правки исчезнут.
Потеряли коммит после неудачного reset или удалили ветку? Git ещё помнит её. Команда git reflog показывает все перемещения HEAD за последние недели, найдите там нужный хеш и выполните git switch -c rescue хеш. Коммит вернётся в новую ветку.
Частые сообщения при push: Permission denied (publickey) значит, что ключ не добавлен на GitHub или не загружен в агент (проверьте ssh-add -l), а rejected, fetch first значит, что на сервере есть коммиты, которых нет у вас. Сделайте git pull, разрешите конфликты, если они есть, и повторите push. Если Git станет частью ежедневной работы, пригодятся алиасы для длинных команд и bash-скрипты для рутины.
Частые вопросы
Чем Git отличается от GitHub?
Git это программа на вашем компьютере, которая ведёт историю изменений. GitHub это веб-сервис, где хранят копии репозиториев и работают над ними вместе. Git прекрасно работает и без GitHub.
Что выбрать для GitHub: HTTPS или SSH?
Оба работают. Для HTTPS вместо пароля нужен персональный токен доступа. SSH-ключ настраивается один раз и не требует ввода токена, поэтому в Linux обычно выбирают его.
Как отменить последний коммит?
Если он ещё не отправлен, выполните git reset --soft HEAD~1: коммит исчезнет, а изменения останутся в индексе. Если уже отправлен, используйте git revert, чтобы не переписывать общую историю.
Почему ветка называется master, а не main?
Так Git 2.x называет первую ветку по умолчанию. Задайте git config --global init.defaultBranch main, а в существующем репозитории переименуйте ветку командой git branch -m master main.
Нужно ли учить все команды Git сразу?
Нет. Для ежедневной работы хватает status, add, commit, log, diff, switch, pull и push. Остальное осваивается по мере необходимости.
Документация и источники
- Pro Git (русский перевод), git-scm.com, 2026
- Git documentation: git-config, git-switch, git-restore, Git Project, 2026
- Connecting to GitHub with SSH, GitHub Docs, 2026
Читайте также
- Как подключиться по SSH из Linux и Windows: от первого входа до туннелей
- Bash-скрипты для начинающих: от первого файла до рабочего бэкапа
- Vim для начинающих: как выйти из редактора, сохранить файл и работать без мыши
- Основные команды Linux для начинающих с примерами
- WSL2 в 2026 году: настраиваем Linux-среду для разработки в Windows
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.