August 14, 2021

Путешествие файлов во времени с Git

Система управления версиями Git предоставляет удобный способ работы с разными версиями файлов и переключения между ними. Когда это полезно? Например, вы хотите внести ряд изменений, а потом откатиться назад, вернув первозданный вид. Однако если это делать вручную, можно забыть восстановить некоторые из изменений.

Рассмотрим более практичный способ достижения нашей цели на примере. Зафиксируем состояние файла 1.py:

Затем внесем в него изменения:

Если теперь вызвать команду

git checkout -- 1.py  

произойдет откат к прежней версии:

На самом деле можно вернуться не только к предыдущей версии, но и присутствующей в любом из коммитов, явно указав последний. Для этого нужно немного видоизменить команду. Сначала выведем все коммиты:

git log --oneline

Теперь вызовем команду отката, указав хеш коммита:

git checkout c030c55 1.py  

Для получения результата аналогичного первому вызову, укажем предыдущий коммит:

Следует отметить, что перемещение к прежней версии можно легко осуществить с использованием графических инструментов различных сред разработок. Например, в PyCharm-е для этого следует на области внутри файла нажать правой кнопкой мыши и выбрать Git->Rollback:

Для JupyterLab то же производится посредством перехода на вкладку jupyterlab-git (подробности установки описаны здесь) и нажатия на стрелочку (Discard changes) в разделе Changes->Changed напротив имени целевого файла: