Git: сбросить ветку develop до состояния ветки release

8 февраля 2024
Когда во время активной разработки на Дев-версии проекта накапливается большое количество мусора, то рекомендуется сбрасывать в Гите ветку develop до состояния ветки release. Делается это командами:
git checkout release
git pull

git checkout develop
git rm -rf .
git checkout release .
git commit -a -m "develop: выполнили сброс ветки до состояния ветки release"

Внесу чуть ясности. В первой группе команд мы обновили ветку release с внешнего репозитория до актуального состояния. Затем перешли на ветку develop и выполнили команду git rm -rf . для удаления всех файлов и папок рабочего каталога ветки. Команде передаются ключи выполнения -rf (другая запись -r -f и которые означают: -r удаление всего содержимого, -f — принудительное удаление, не делая проверок).

Затем с помощью команды git checkout release . происходит запись в пустую рабочую папку ветки develop файлов и папок из ветки release. Дело в том, что если в команде git checkout release указать путь к папке или файлу (в нашем случае точка . указывает на весь рабочий каталог ветки release), то команда просто скопирует файлы и папки, и не станет переключать ветки (указатель HEAD останется нетронутым).

Последней командой мы сохраняем состояние рабочей папки текущей ветки в виде коммита (ключ -a выполняет добавление отслеживаемых файлов в индекс).

Имейте в виду, что в ветке develop могут быть новые (неотслеживаемые) файлы и папки, которые в release находятся в отслеживаемых. Поэтому перед коммитом лучше дополнительно посмотреть статус репозитория (команда git status) и в случае существования новых нужных файлов добавьте их в отслеживание и индекс с помощью команды git add .