Learning Platform
Глоссарий Troubleshooting
Урок 02.02 · 16 мин
Начальный
Gitgit initgit commitgit statusgit logПервый коммит

Твой первый репозиторий и первый коммит

В прошлом уроке мы поняли боль: копии файлов не масштабируются. Теперь решим её на практике. К концу этого урока у вас будет настоящий Git-репозиторий с настоящим коммитом внутри. Мы не будем объяснять, как Git хранит данные внутри (это в следующем модуле) — сначала важно один раз пройти весь путь руками и увидеть, что всё работает. Это ваш первый успех.

Всё, что нужно, — терминал и установленный Git (вы поставили его на Ступени 0). Проверим:

git --version

Ожидаемый вывод (номер версии может отличаться, это нормально):

git version 2.54.0

Если команда выдала версию — отлично, поехали. Если «command not found» — вернитесь к установке Git и доведите её до конца.


Шаг 1. Создаём папку проекта

Репозиторий Git живёт внутри обычной папки. Создадим её и зайдём внутрь:

mkdir -p ~/git-sandbox/my-first-repo
cd ~/git-sandbox/my-first-repo

Папка пустая. Пока это просто папка, Git про неё ничего не знает.


Шаг 2. git init — превращаем папку в репозиторий

Команда git init говорит Git: «начни следить за этой папкой».

git init

Ожидаемый вывод:

Initialized empty Git repository in /Users/you/git-sandbox/my-first-repo/.git/

Что произошло: Git создал внутри папки скрытую подпапку .git. В ней он будет хранить всю историю версий. Вам туда лазить не нужно — Git управляет ею сам. Проверим, что папка появилась:

ls -a

Ожидаемый вывод:

.  ..  .git

Видите .git — значит, репозиторий создан. Эта папка и отличает обычный каталог от репозитория.

tip git init запускают один раз на проект. Если вы выполните его повторно в той же папке, Git просто скажет «Reinitialized» и ничего не сломает — но обычно так делать не нужно.


Шаг 3. git status — что Git думает прямо сейчас

git status — самая полезная команда новичка. Она показывает, что Git видит в папке. Запускайте её часто — после каждого шага, чтобы понимать, что происходит.

git status

Ожидаемый вывод:

On branch main

No commits yet

nothing to commit (working tree clean)

Перевод на человеческий: «Ты на ветке main. Коммитов пока нет. Сохранять нечего — папка пустая». Всё верно: мы ещё не создали ни одного файла.


Шаг 4. Создаём файл

Создадим простой текстовый файл — это и будет наш проект:

echo "# Мой первый проект" > README.md

Снова спросим Git, что изменилось:

git status

Ожидаемый вывод:

On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	README.md

nothing added to commit but untracked files present (use "git add" to track)

Ключевое слово — Untracked (неотслеживаемый). Git заметил новый файл README.md, но пока не следит за ним. Git намеренно не хватает всё подряд: вы сами решаете, что попадёт в историю, а что нет (например, временные файлы вам не нужны). Git даже подсказывает следующий шаг: use "git add".


Шаг 5. git add — готовим файл к сохранению

Чтобы Git начал отслеживать файл и включил его в следующую сохранённую версию, добавим его командой git add:

git add README.md

Эта команда ничего не выводит — и это нормально. Проверим статус:

git status

Ожидаемый вывод:

On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
	new file:   README.md

Теперь файл в разделе Changes to be committed (изменения, готовые к коммиту). Git как бы подготовил список того, что войдёт в следующую версию. Пока коммита нет — есть только намерение.

note Зачем отдельный шаг git add, почему нельзя сразу коммитить? Потому что часто вы меняете десять файлов, а сохранить хотите только три связанных между собой. git add — это способ собрать именно те изменения, которые логически образуют одну версию. Подробно эту «область подготовки» разберём в модуле про три области Git. Пока просто принимаем правило: сначала add, потом commit.


Шаг 6. git commit — сохраняем версию

Теперь главный момент — сохраняем версию. Это и есть коммит. Каждому коммиту полагается сообщение: короткое объяснение, что и зачем вы сохранили. Передаётся через флаг -m (от message):

git commit -m "Первый коммит: добавил README"

Ожидаемый вывод (хеш будет другим — это нормально):

[main (root-commit) 9f2a3c1] Первый коммит: добавил README
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

Поздравляю — у вас есть первый коммит! Разберём вывод по словам:

  • main — имя ветки, на которой вы находитесь.
  • (root-commit) — это самый первый коммит в репозитории, у истории появилось начало.
  • 9f2a3c1 — короткий идентификатор коммита. У каждого коммита он свой и уникальный. Что это за набор символов и откуда он берётся — разберём позже, сейчас просто примите как «номер версии».
  • 1 file changed, 1 insertion(+) — статистика: один файл, одна добавленная строка.

Спросим статус ещё раз:

git status

Ожидаемый вывод:

On branch main
nothing to commit, working tree clean

working tree clean — «всё сохранено, несохранённых изменений нет». Сравните с самым первым статусом: тогда было «No commits yet», теперь история не пуста.


Шаг 7. git log — смотрим историю

Убедимся, что версия действительно сохранена. Команда git log показывает историю коммитов:

git log

Ожидаемый вывод:

commit 9f2a3c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b (HEAD -> main)
Author: Ваше Имя <[email protected]m>
Date:   Thu May 29 14:03:11 2026 +0300

    Первый коммит: добавил README

Вот она — ваша версия, подписанная автором, датой и сообщением. То самое, чего так не хватало папке с копиями. Длинный набор символов после commit — это полный идентификатор; короткий 9f2a3c1 из прошлого шага — его начало.

Если коммитов будет много, удобнее компактный вид — по одной строке на коммит:

git log --oneline

Ожидаемый вывод:

9f2a3c1 (HEAD -> main) Первый коммит: добавил README

tip Если git log открылся на весь экран и не отдаёт управление — нажмите q (quit), чтобы выйти. Git показывает длинный вывод через постраничный просмотрщик.


Что вы только что сделали

Вы прошли полный базовый цикл Git: создали репозиторий (git init), создали файл, подготовили его (git add), сохранили версию (git commit) и посмотрели историю (git log). Между шагами вы постоянно сверялись с git status — привыкайте, это ваш главный навигатор.

Запомните этот ритм: изменил -> add -> commit. Дальше вся работа в Git — это повторение этого цикла снова и снова. В следующем уроке мы изменим файл, сделаем второй коммит и впервые увидим, как Git показывает разницу между версиями.


Проверка знанийKnowledge check
Вы создали новый файл data.csv в репозитории и сразу запустили git commit -m "добавил данные", но файл не попал в коммит. git status показывает data.csv в разделе Untracked files. Почему коммит не сохранил файл и что нужно было сделать?
ОтветAnswer
Git коммитит только то, что предварительно подготовлено командой git add. Новый файл в состоянии Untracked: Git его видит, но не отслеживает и не включает в коммит автоматически — вы сами решаете, что войдёт в версию. Нужно было сначала выполнить git add data.csv (файл перейдёт в раздел Changes to be committed), и только потом git commit. Правило: сначала add, потом commit. Проверить, что именно войдёт в коммит, всегда можно через git status перед коммитом.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 3. Что делает команда git init, выполненная в папке проекта?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3