intDataBlog
← ЖурналМаршруты обучения ↗

Git: первое изменение с понятной историей

Пройдите путь от рабочего файла до проверенного коммита и прочитайте разницу.

Практика рассчитана на отдельную учебную среду и вымышленные данные.

Git

Рабочая папка, индекс и история показывают разные состояния изменения. Освойте маленькие проверяемые коммиты, прежде чем менять общую историю.

Git хранит историю состояний проекта. Рабочий каталог содержит текущие файлы; индекс описывает содержимое следующего коммита; коммит фиксирует подготовленное состояние вместе с родительской историей. Поэтому сохранение файла в редакторе и создание коммита — разные действия. Сначала прочитайте git status, затем разницу, и только потом выбирайте, что попадёт в историю.

Коммит полезен, когда объясняет один завершённый шаг: например, исправление расчёта суммы с проверенным примером. Название должно помогать будущему читателю понять результат. Случайная смесь оформления, новой функции и удаления файлов затрудняет разбор и проверку причины изменения.

В учебном репозитории создайте README с целью маленького проекта и файл с одним примером. Выполните git diff до добавления в индекс: это сравнение рабочего каталога с индексом. После git add README.md прочитайте git diff --cached: теперь виден подготовленный набор. Если второй файл не добавлен, он не станет частью коммита только потому, что лежит рядом.

После коммита прочитайте git log --oneline и git show --stat HEAD. Сверьте результат с задачей: есть ли нужный файл, нет ли лишнего, понятно ли сообщение? Чистый status сообщает об отсутствии локальной разницы, но не подтверждает правильность кода. Для этого нужен отдельный проверенный сценарий.

Ветка — подвижное имя линии истории. Создавая учебную ветку, вы можете закончить небольшой эксперимент и сравнить его с исходным состоянием. Перед объединением прочитайте итоговую разницу целиком. Если два человека меняли один участок, конфликт требует осмысленного решения: выбор любого варианта только ради зелёного статуса может удалить полезное поведение.

Удалённый репозиторий — отдельное место хранения истории. Локальный коммит не публикует изменение; отправка истории не разворачивает приложение. Эти этапы проверяют независимо: локально есть нужное состояние, удалённая ветка содержит его, опубликованный адрес показывает требуемую версию. Не отправляйте учебные эксперименты в рабочий репозиторий.

Перед каждым реальным действием смотрите текущее состояние, ветку и адрес назначения. Не добавляйте секреты в индекс, даже на короткое время: удаление строки следующим коммитом не удаляет её из предыдущей истории. Для первого занятия достаточно отдельного локального каталога без рабочих ключей и пользовательских данных.

  • status/diff/log
  • Ветки и слияние
  • fetch и pull

Попробуйте

  1. Пройдите первые уровни Learn Git Branching: commit и branch.
  2. В новом учебном репозитории измените README, сравните git diff и git diff --cached.
  3. Создайте локальный коммит, проверьте git status и git log --oneline.

В истории одно осмысленное изменение; разница рабочего файла и staged-содержимого объяснена.

Изменяет ли fetch вашу рабочую ветку?

Обычно fetch обновляет удалённые ссылки и объекты; интеграция в рабочую ветку — отдельный шаг.

Продолжить на русском и английском
  • Pro Git RU ↗

    Главы 1–3: фиксация изменений и ветки. Онлайн-книга открыта; для локальных упражнений нужен Git.

  • Pro Git EN ↗

    Git Basics, затем Git Branching. Открытая онлайн-книга.

  • Learn Git Branching RU/EN ↗

    Пройдите вводные уровни commit и branch. Модель репозитория в браузере; нужен JavaScript.

Редакция intData