Настройка тестового репозитория Git:
В этом разделе я собираюсь клонировать один из моих репозиториев GitHub на свой компьютер, чтобы настроить тестовый репозиторий для этой статьи. Если вы хотите следовать за мной, то вы тоже можете это сделать. Если у вас есть собственный репозиторий Git для работы, тогда отлично! Вы также можете использовать это.
Чтобы клонировать один из моих репозиториев GitHub (https: // github.com / dev-shovon / my-project) выполните следующую команду:
$ git clone https: // github.com / dev-shovon / мой проект undo_commit_demo
Репозиторий GitHub следует клонировать в undo_commit_demo / каталог.
Теперь перейдите к undo_commit_demo / каталог следующим образом:
Фиксация, которую вы хотите отменить, может находиться в другой ветке, чем моя. Я хочу отменить последнюю фиксацию ie-fix ветка. Итак, я должен тянуть ветку ie-fix из моего репозитория GitHub.
Вы можете тянуть ie-fix ветку от GitHub следующим образом:
$ git pull origin ie-fixПРИМЕЧАНИЕ: Здесь, ie-fix это название филиала.
В ie-fix ветку нужно тянуть.
Теперь оформляем заказ в филиал (в моем случае, ie-fix), из которого вы хотите отменить последнюю фиксацию следующим образом:
$ git checkout ie-fix
Как видите, последняя фиксация ie-fix филиал aec00f3. В следующих разделах я покажу вам способы отмены последней фиксации в вашем репозитории Git.
Отменить последнюю фиксацию и сохранить изменения:
Один из способов отменить последнюю фиксацию - использовать программный сброс в вашем репозитории Git. Это означает, что последняя фиксация удаляется, а изменения, внесенные вами в эту фиксацию, добавляются в промежуточную область вашего репозитория Git. Таким образом, если вы хотите что-то исправить, вы можете изменить файлы и добавить новую фиксацию.
Как видите, последний коммит в моем ie-fix филиал aec00f3.
$ git log --oneline
Кроме того, мой плацдарм чистый.
$ git status
Теперь, чтобы удалить или отменить последнюю фиксацию, выполните следующую команду:
$ git reset - мягкая ГОЛОВКА ~ 1
Как видите, коммит aec00f3 ушел.
$ git log --oneline
Кроме того, файл, который я изменил в последней фиксации, находится в моей промежуточной области.
$ git status
Теперь вы можете изменить файлы, исправить допущенные ошибки и снова зафиксировать изменения.
Отменить последнюю фиксацию и удалить изменения:
Если последний коммит, который вы хотите удалить, бесполезен для вас, вы можете подумать о полной перезагрузке вашего репозитория Git. Что делает жесткий сброс, он удаляет последнюю фиксацию, как и раньше. Но он также удаляет все изменения, которые вы сделали в последней фиксации. Делайте полный сброс только тогда, когда вы уверены, что вам больше не нужно ничего из последнего коммита.
Я собираюсь вытащить ie-fix ветку из моего репозитория GitHub снова, чтобы восстановить последнюю фиксацию aec00f3 и удалите его снова в этом разделе.
$ git pull origin ie-fix
Как видите, вернулась последняя фиксация. Если ваш репозиторий Git загружен в облачную службу Git, такую как GitHub, вы также можете восстановить любую ошибочно удаленную фиксацию.
Как видите, у меня чистая плацдарма.
$ git status
Теперь, чтобы удалить последнюю фиксацию и удалить изменения в этой фиксации, выполните следующую команду:
$ git reset --hard HEAD ~ 1
Последний коммит должен быть удален, а ГЛАВА указатель должен быть обновлен.
Как видите, коммит aec00f3 удаляется и фиксация непосредственно перед этим (3fffdee) это текущая последняя фиксация.
$ git log --oneline
Площадка для постановки также чистая. Итак, файлы изменений из удаленного коммита существуют.
$ git status
Обновление удаленного репозитория Git:
Теперь, когда вы успешно удалили ошибочную фиксацию из своего репозитория Git, вы можете также обновить свой репозиторий GitHub. Это тема этого раздела.
Как вы видете, git статус также показывает, что я на 1 коммит от удаленного репозитория.
Прежде чем я обновил свой репозиторий GitHub, коммит aec00f3 существует, хотя я удалил его из локального репозитория Git, как вы можете видеть.
Чтобы синхронизировать локальный репозиторий Git с репозиторием GitHub, выполните следующую команду:
$ git push --force origin ie-fixИзменения в локальном репозитории Git должны быть синхронизированы с репозиторием GitHub.
Репозиторий GitHub необходимо обновить. Как видите, коммит aec00f3 больше нет в списке. Коммит непосредственно перед aec00f3, который 3fffdee теперь последняя фиксация.
Итак, вот как вы отменяете последнюю фиксацию в Git. Спасибо, что прочитали эту статью.