9. Git: система управления версиями для всех. Меньше теории, больше практики. Как откатить изменения?

Временный откат (checking out)

GUI

Checking out - это процесс переключения между всеми за-commit-енными изменениями.

Можно вернуться к предыдущему commit-у чтобы просмотреть содержимое какого-нибудь файла и потом снова вернуться к последней версии файла.

Меню Repository | Visualize All Branch History открывает gitk:


Цветные кружки показывают сделанные commit-ы, а справа от них комментарии.
SHA1 ID это commit ID, который используется для отката/наката изменений.
Если теперь в Git Gui зайти в Branch | Checkout (Ctrl + O), вставить в поле Revision Expression какой-нибудь SHA1 ID и нажать Checkout то произойдет переход на эту ревизию.

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

Чтобы вернуться к последним изменениям надо сделать в Git Gui:
1) Branch | Checkout
2) Выбрать Localbranch и затем master
3) Нажать кнопку Checkout

CLI

Используются команды:
git log
git checkout ___commit_id___

git log показывает историю репозитория предоставляя следующую информацию: commit ID, автор, дата, и комментарий.

При указании commit ID достаточно указывать первый 5 символов вместо всех 40.


Чтобы вернуться к последним изменниям достаточно дать команду:
git checkout master

Примечание: когда вы возвращаетесь на предыдущий commit вы "парите в воздухе" потому что все изменения которые вы сделаете исчезнут при возврате к master.

Перманентный откат (reset)

Есть три типа resetting-а:

  • Soft
  • ‹‹Hard - игнорировать все изменения сделанные после commit-а
  • ‹Mixed

GUI

1) В Git Gui переходим в меню Repository | Visualize All Branch History, откроется Gitk.
2) Нажимаем правой кнопкой мыши на commit-e и выбираем Reset master branch to here.
3) В появившемся окне выбираем тип resetting-а.
4) File | Reload (Ctrl + F5) чтобы перезагрузить Gitk.

CLI

git log
git reset --hard 8b4fe