Практическое руководство по Git для тех, кто начинает с нуля: установка на Windows, macOS и Linux, первый репозиторий, базовый цикл работы и шпаргалка команд. Команды и факты сверены с официальной документацией git-scm.com 3 октября 2026 года.
Базовый цикл и работа с индексом проверены локально в изолированном тестовом репозитории. Установки на всех ОС, внешняя отправка и работа графических клиентов не выполнялись.
Что такое Git и контроль версий
Git — распределённая система контроля версий: программа, которая запоминает историю изменений файлов и позволяет вернуться к любой сохранённой точке. Проект свободный и open source, работает локально, без интернета и регистрации. Номер текущей версии смотрите на официальном сайте; установленный пакет операционной системы может отставать от последнего выпуска.
Контроль версий закрывает три повседневные задачи:
- история изменений вместо папки файлов «финал_v2_точно_финал»;
- совместная работа, когда правки нескольких людей не затирают друг друга;
- эксперименты в отдельных ветках без включения правки в основную ветку. Перед слиянием результат всё равно нужно проверить.
Установка
Windows. Скачайте установщик Git for Windows со страницы установки или выполните в PowerShell:
winget install --id Git.Git -e --source wingetmacOS. Через Homebrew:
brew install gitЕсли Homebrew уже используется, команда выше устанавливает Git через него. Другой путь — xcode-select --install, которая ставит Git в составе Xcode Command Line Tools. Установку выбранного инструмента выполняйте отдельно; наличие Homebrew здесь не предполагается автоматически.
Linux. Из штатного пакетного менеджера:
# Debian / Ubuntu
sudo apt-get install git
# Fedora
sudo dnf install git
# Arch Linux
sudo pacman -S gitОстальные примеры команд ниже рассчитаны на Bash: в macOS и Linux откройте Терминал, в Windows — установленный вместе с Git терминал Git Bash. Первая команда установки winget выше выполняется в PowerShell.
Проверьте установку:
git --versionОжидаемый ответ — строка вида git version 2.x.y. Номер может отличаться: главное, чтобы команда отвечала версией, а не ошибкой «команда не найдена».
Первичная настройка
Один раз задайте имя и почту. Они подписывают каждый ваш коммит:
git config --global user.name "Ваше Имя"
git config --global user.email "you@example.com"Проверка: git config user.name и git config user.email должны вывести выбранные значения. Эти сведения сохраняются в коммитах; для публичного проекта проверьте настройки приватности email на GitHub. Флаг --global применяет значения ко всем вашим локальным репозиториям; для отдельного проекта задайте их без этого флага в его папке.
Первый репозиторий и базовый цикл
Создайте папку проекта и превратите её в репозиторий:
mkdir my-project
cd my-project
git init -b mainКлюч -b main явно задаёт начальной ветке имя main. Без него имя зависит от версии Git и настройки init.defaultBranch; не рассчитывайте, что на всех компьютерах оно одинаковое.
Дальше работа идёт циклом из трёх зон:
flowchart LR
A["Рабочая папка"] -->|"git add"| B["Индекс"]
B -->|"git commit"| C["История репозитория"]git add), затем сохраняете их одним коммитом (git commit).Пройдите цикл на практике:
echo "# Мой проект" > README.md # создать файл
git status # посмотреть состояние
git add README.md # добавить файл в индекс
git commit -m "Первый коммит" # сохранить снимок в историю
git log --oneline # посмотреть историюНа первом git status Git покажет README.md как неотслеживаемый файл (untracked). После коммита git log --oneline выведет строку с хешем и сообщением «Первый коммит», а git status ответит nothing to commit, working tree clean. Это наблюдаемый признак успеха.
Перед первым коммитом полезно определить, какие файлы должны попасть в снимок. Передайте ИИ список учебных файлов и попросите подготовить адресный план.
Промпт:
Я хочу сохранить первый локальный снимок учебной папки в Git. Подготовь только план. Команды не выполняй, GitHub не подключай.
Незаполненные поля в квадратных скобках считай отсутствующими данными.
ОС и терминал: [система и оболочка].
Git: [проверенный вывод git --version или «не проверен»].
Учебная папка: [путь без приватных данных].
Состояние: [есть ли здесь или в родительской папке репозиторий; текущая ветка и подготовленные изменения, если известны].
Учебные файлы: [имя и назначение каждого, без содержимого секретов].
В снимке должны быть: [точный список].
Не трогать и не добавлять: [список].
Пустые поля считай неизвестными. Если списки пересекаются, сначала назови конфликт и спроси, что исключить. Если версия Git или состояние папки неизвестны, дай только проверки чтением и остановись до их результатов. Если не указаны путь, оболочка или точный состав снимка, сначала запроси их. Чужие изменения и изменения с неизвестным владельцем сохраняй.
Когда вводных достаточно, предложи короткую последовательность для этой папки и этой оболочки. Объясни назначение каждого шага. При существующем репозитории не предлагай повторную инициализацию или смену ветки. Если уже есть подготовленные чужие изменения, остановись для выбора границы снимка.
Добавляй в план только названные файлы, без массового добавления. Не перезаписывай существующие файлы. Покажи, как перед коммитом проверить имена и содержимое индекса, а после — состав сохранённого коммита и оставшиеся локальные изменения. Состояние всей папки не обязано стать чистым.
Назови признаки остановки и способ сохранить исходники. Не предлагай reset, restore, удаление .git, отправку на сервер или переписывание истории. Локальный коммит сам по себе не доказывает наличие независимой резервной копии.Получится план первого снимка с точным составом и проверкой индекса перед коммитом.
Сопоставьте список планируемых файлов со своим списком. Перед реальным коммитом прочитайте подготовленные изменения; после проверьте сохранённый состав.
Запрос готовит план. Он не проверяет ваш компьютер и не выполняет команды; неизвестное состояние папки нужно выяснить отдельно.
Ветки
Ветка позволяет попробовать идею, не трогая рабочую версию:
git switch -c idea # создать ветку idea и перейти в неё
# правите файлы, делаете коммиты
git switch main # вернуться в main
git merge idea # влить изменения из idea в mainКоманда git branch показывает список веток; текущая отмечена звёздочкой. Если git switch в вашей версии Git недоступен, используйте пару git checkout -b idea и git checkout main.
Удалённый репозиторий и GitHub
Git сам по себе локален: вся история живёт в папке проекта. Чтобы хранить копию на сервере и работать в команде, репозиторий размещают на хостинге: GitHub, GitLab или аналоге. Базовая связка из трёх команд:
| Команда | Что делает |
git clone <url> | Скачивает репозиторий с хостинга на компьютер |
git pull | Получает изменения и интегрирует их в текущую ветку по настройкам |
git push | Отправляет ваши коммиты на сервер |
Регистрация на GitHub, создание репозитория и первый Pull Request разобраны по шагам в отдельном руководстве: GitHub для новичков: регистрация, репозиторий, Git и Pull Request.
git push --force перезаписывает историю на сервере и может стереть чужие коммиты. В общем репозитории не используйте эту команду.GUI-клиенты
Командная строка — не единственный вариант. Официальный список клиентов на git-scm.com насчитывает несколько десятков приложений. Например, в каталоге перечислены следующие клиенты. Перед установкой проверьте поддерживаемую ОС и условия лицензии на официальном сайте выбранного продукта:
| Клиент | Для чего посмотреть |
| GitHub Desktop | Основные операции Git и работа с GitHub через окно приложения |
| SourceTree | Работа с репозиториями через графический интерфейс |
| GitKraken Desktop | Просмотр истории и совместная работа |
| TortoiseGit | Работа с Git из интерфейса Windows |
| Fork | Просмотр изменений, веток и истории |
| SmartGit | Работа с Git через отдельное приложение |
Полный список смотрите на странице git-scm.com/downloads/guis. В экосистеме Git есть утилиты git-gui и gitk; их наличие в вашей установке зависит от пакета. Кроме того, редакторы кода вроде VS Code показывают базовые операции Git прямо в интерфейсе.
Для базового цикла достаточно команд из этого руководства. Конфликты и особенности командного процесса потребуют дополнительного разбора. GUI удобнее для просмотра истории и разбора сложных слияний.
Шпаргалка базовых команд
| Команда | Что делает | Пример |
git init -b main | Создать репозиторий в текущей папке | git init -b main |
git status | Показать состояние файлов | git status |
git add | Добавить файл в индекс | git add README.md |
git commit -m | Сохранить снимок с сообщением | git commit -m "Добавил README" |
git log --oneline | Показать историю коммитов в одну строку | git log --oneline |
git switch -c | Создать ветку и перейти в неё | git switch -c idea |
git merge | Влить ветку в текущую | git merge idea |
git restore | Восстановить рабочий файл из индекса; отменяемые правки будут потеряны | git restore README.md |
git clone | Скопировать репозиторий с сервера | git clone https://github.com/OWNER/REPO.git |
git pull | Получить и интегрировать изменения | git pull |
git push | Отправить коммиты на сервер | git push |
В примере clone замените OWNER/REPO владельцем и именем настоящего репозитория из его адреса. Условные слова не обозначают готовый проект.
Полезные сценарии
Начать свой проект под контролем версий
Задача: вы начинаете проект и хотите историю изменений с первого дня. Условие: установленный Git. Действия: git init -b main в папке проекта, затем первый коммит по циклу из раздела «Первый репозиторий и базовый цикл». Результат: git log --oneline показывает первый коммит. Ограничение: Git не отслеживает пустые папки. Чтобы исключить лишнее, создайте файл .gitignore и перечислите в нём то, что не должно попадать в историю: логи, временные файлы, node_modules.
Присоединиться к существующему проекту
Задача: получить локальную копию проекта, который уже лежит на хостинге. Действия: git clone <url>, затем cd в появившуюся папку и git log --oneline. Результат: вся история проекта доступна локально. Ограничение: для приватных репозиториев потребуется доступ; настройка ключей и токенов описана в руководстве по GitHub по ссылке выше.
Отменить правки до коммита
Задача: нужно отменить незакоммиченные изменения конкретного отслеживаемого файла. Сначала прочитайте git diff -- <файл> и сохраните нужный фрагмент отдельно. Затем git restore <файл> восстановит рабочий файл из индекса. Если индекс совпадает с последним коммитом, это вернёт ту редакцию. Проверьте содержимое и git status. Команда уничтожает отменяемые изменения рабочей копии и не снимает уже подготовленную в индексе правку; состояние всего проекта не обязано стать чистым. Для отмены отправленного коммита обычно рассматривают отдельный git revert по правилам команды.
Что делать, если что-то пошло не так
- «Команда git не найдена» — Git не установлен или терминал не перезапущен после установки.
- При коммите Git требует имя и почту — выполните настройку из раздела «Первичная настройка».
- Команда
git pushотклонена — прочитайте точную ошибку. Причиной могут быть новые коммиты, недостаток прав или правила ветки. При расхождении истории сначала сохраните свои правки, получите сведения черезgit fetchи выберите принятый в проекте способ интеграции. Не выполняйтеpullи повторную отправку вслепую. - В историю попал лишний файл — не удаляйте репозиторий. Историю можно исправить, но начните с копии папки и чтения
git log.
Проверка результата
Пройдите три пункта:
git --versionотвечает номером версии;git config user.nameиgit config user.emailвозвращают ваши данные;- в учебном репозитории
git log --onelineпоказывает хотя бы один коммит, аgit statusпишетworking tree clean.
Если выполняются все три, базовая установка и настройка завершены.
Источники
- git-scm.com — официальный сайт Git;
- документация и справочник команд;
- Pro Git — официальная книга, читается бесплатно, есть русский перевод;
- страницы установки для Windows, macOS и Linux;
- официальный список GUI-клиентов.
Следующий шаг
Логичное продолжение — разместить репозиторий на хостинге и научиться работать с ним в команде: GitHub для новичков: регистрация, репозиторий, Git и Pull Request.
Если вы настраиваете рабочий процесс с кодом в команде или подключаете к репозиториям ИИ-агентов, контроль версий — первый слой, с которого начинается порядок.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov



