Как найти изменения на сайте

Как найти изменения на сайте

by Vadim Dvorovenko -
Number of replies: 1
Picture of Developers Picture of Майнтейнер перевода

Иногда возникает вопрос, как найти, какие изменения в коде были сделаны предыдущим администратором. Решил написать рецепт, чтобы не придумывать как объяснить каждый раз. Потребуется git

Идем на текущем сайте в корне в version.php и ищем там строку вида $version  = 2021051707.03 - это число максимально точно указывает на текущую версию кода.

Вызываем git clone --no-checkout https://github.com/moodle/moodle my-moodle , в папке my-moodle появится пустой репозиторий moodle

Переходим в эту папку cd my-moodle

Вызываем git log -S"$version  = 2021051707.03" --all -- version.php

Эта команда ищет появление и исчезновение этой строки во всей истории изменений файла version.php. Может быть долгой
В большинстве случаем поиск выдаст два commit. 


Более ранний - это коммит соответствующий релизу, когда эта строка появилась первый раз. Более поздний - это коммит соответствующий следующему релизу, когда эта строка была убрана, и вместо неё указана другая версия. Можно посмотреть подробнее (крутить стрелками вверх и вниз, выход q), вызвав 

git log -S"$version  = 2021051707.03" --all -p -- version.php

Нам потребуется более ранний из коммитов. Нужно скопировать значение строки commit или переписать первые 8 знаков.

После этого переключиться на нужный commit, вызвав

git reset --soft 72b40877 или git reset --soft 72b408772c93cb6b7b35e071047236d4c04677f3

Команда с параметром --soft не меняет состояние файлов в папке, просто перемещает указатель на нужный commit

Теперь нужно скопировать в эту папку файлы все файлы текущего сайта (за исключением папки .git, если такая была на сервере).

Команда git status покажет изменения в текущей папке относительно состояния репозитория.


Sum of ratings: 1 (1)
In reply to Vadim Dvorovenko

Re: Как найти изменения на сайте

by Vadim Dvorovenko -
Picture of Developers Picture of Майнтейнер перевода
Если нужно восстановить файлы этой версии в исходном состоянии (например, если файлы на сайте были не изменены администратором или разработчиком, а повреждены вирусом или сбоем).
Вместо git reset --soft делаем git reset --hard и копируем эти файлы на сайт