Отмена изменений
На любой стадии может возникнуть необходимость что-либо отменить. Здесь мы рассмотрим несколько основных инструментов для отмены произведённых изменений. Будьте осторожны, ибо не всегда можно отменить сами отмены. Это одно из немногих мест в Git'е, где вы можете потерять свою работу если сделаете что-то неправильно.
Изменение последнего коммита
Одна из типичных отмен происходит тогда, когда вы делаете коммит слишком рано, забыв добавить какие-то файлы, или напутали с комментарием к коммиту. Если вам хотелось бы сделать этот коммит ещё раз, вы можете выполнить commit с опцией --amend:
$ git commit --amend
Эта команда берёт индекс и использует его для коммита. Если после последнего коммита не было никаких изменений (например, вы запустили приведённую команду сразу после предыдущего коммита), то состояние проекта будет абсолютно таким же и всё, что вы измените, это комментарий к коммиту.
Появится всё тот же редактор для комментариев к коммитам, но уже с введённым комментарием к последнему коммиту. Вы можете отредактировать это сообщение так же, как обычно, и оно перепишет предыдущее.
Например я сделал первый коммит файлика в Git и сразу же после этого решил поменять комментарий к нему. Мой первый комментарий был – “Первый коммит”, заменим его
Теперь изменим наш комментарий
Закрываем редактор
И видим что наш комментарий к коммиту был изменен.
Или для примера добавим к этому же последнему коммиту еще один файл. Я его создал и решил добавить к первому коммиту
Меняем наш коммент на другой
Вот и добавили все в тот же первый коммит еще один файл и поменяли комментарий к первому коммиту снова
Отмена индексации файла
Приведём пример. Допустим, вы внесли изменения в два файла и хотите записать их как два отдельных коммита, но случайно набрали git add . и проиндексировали оба файла. Как теперь отменить индексацию одного из двух файлов? Команда git status напомнит вам об этом:
Сразу после надписи “Changes to be committed”, написано использовать git reset HEAD <файл>... для исключения из индекса. Так что давайте последуем совету и отменим индексацию файла Test.txt:
Как видим файл Test.txt изменён, но снова не в индексе.
Отмена изменений файла
Что, если вы поняли, что не хотите оставлять изменения, внесённые в файл Test.txt? Как быстро отменить изменения, вернуть то состояние, в котором он находился во время последнего коммита (или первоначального клонирования, или какого-то другого действия, после которого файл попал в рабочий каталог)? К счастью, git status говорит, как добиться и этого. В выводе для последнего примера, неиндексированная область выглядит следующим образом:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
Здесь довольно ясно сказано, как отменить сделанные изменения. Давайте сделаем это.
Как вы видите, изменения были отменены. Вы должны понимать, что это опасная команда: все сделанные вами изменения в этом файле пропали — вы просто скопировали поверх него другой файл. Никогда не используйте эту команду, если вы не полностью уверены, что этот файл вам не нужен.
В данном случае файл Test.txt был переписан сверху своей копией из предыдущего коммита.
Помните, что всё, что является частью коммита в Git'е, почти всегда может быть восстановлено. Даже коммиты, которые находятся на ветках, которые были удалены, и коммиты переписанные с помощью --amend могут быть восстановлены. Несмотря на это, всё, что никогда не попадало в коммит, вы скорее всего уже не увидите снова.
Комментариев нет:
Отправить комментарий