Мы обновили этот курс — добавили новые темы, самостоятельные задания и практические упражнения. Посмотрите этот урок по ссылке: 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 и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.
Загляните в раздел «Обсуждение»:
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт