Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Изменение последнего коммита Основы Git

Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.

Рекомендуем перейти в курс Введение в Git

Мы обновили этот курс — добавили новые темы, самостоятельные задания и практические упражнения. Посмотрите этот урок по ссылке: https://ru.hexlet.io/courses/intro_to_git/lessons/git-commit-amend/theory_unit


Изменение последнего коммита

Здравствуйте!

Сегодня мы поговорим о том, как можно быстро отменить выполненые изменения. На любой стадии может возникнуть необходимость что-либо отменить. Будьте осторожны, ибо не всегда можно отменить сами отмены. Это одно из немногих мест в Git'е, где вы можете потерять свою работу если сделаете что-то неправильно.

Сейчас мы рассмотрим самый частый случай - редактирование коммита, который вы только что выполнили.

Довольно часто возникает такая ситуация, что вы делаете коммит слишком рано, при этом забыв добавить какие-то файлы, или напутали с комментарием к коммиту. В таком случае у вас может появиться желание отменить выполненный коммит и выполнить его ещё раз, но уже с правильными данными.

Первый вариант, который приходит в голову - это сбросить изменения в репозитории до родительского коммита, проиндексировать данные еше раз и выполнить коммит. Хотя это и звучит просто - на практике, если индексация изменений была тяжелая - никому не захочется выполнять ее еще раз. И обычно, делают еще один коммит поверх существующего, а потом выполняют ребейз ветки и склеивают нужные коммиты. Как вы видите - не самый простой путь для изменения последнего коммита. Однако - есть более простой вараинт - вы можете выполнить commit с опцией --amend:

git commit --amend

Эта команда берёт индекс и применяет его к последнему коммиту. Если после последнего коммита не было никаких проиндексированных изменений (например, вы запустили приведённую команду сразу после предыдущего коммита), то состояние проекта будет абсолютно таким же и всё, что вы измените, это комментарий к коммиту.

Появится всё тот же редактор для ввода комментария к коммиту, но уже с введённым комментарием к последнему коммиту. Вы можете отредактировать это сообщение так же, как обычно, и оно перепишет предыдущее.

Рассмотрим еще один пример: после совершения коммита вы осознали, что забыли проиндексировать изменения в файле, которые хотели добавить в этот коммит. Для того, чтобы внести необходимые изменения - вам нужно проиндексировать их и выполнить комманду git commit --amend.

git commit -m 'initial commit'
git add forgotten_file
git commit --amend

Эффект от выполнения этой команды такой, как будто вы не выполнили предыдущий коммит, а еще раз выполнили команду git add и выполнили коммит.

Вот так просто можно изменить последний выполненный коммит.

Помните, что всё, что является частью коммита в Git'е, почти всегда может быть восстановлено. Даже коммиты, которые находятся на ветках, которые были удалены, и коммиты переписанные с помощью --amend могут быть восстановлены. Несмотря на это, всё, что никогда не попадало в коммит, вы скорее всего уже не увидите снова.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.

Об обучении на Хекслете

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»