Каков наиболее эффективный способ получить чистую песочницу git?

Для моей сборки непрерывной интеграции я хочу убедиться, что в моей песочнице git не было внесено никаких случайных файлов, и ни один из файлов не был случайно изменен.

Я знаю о git reset --hard HEAD, и это решает часть проблемы. Но я думаю, что я хочу сделать, это удалить все необработанные и проигнорированные файлы. Я мог бы сделать это методом грубой силы и просто сделать:

rm -rf *
git checkout -f

Но должен быть более эффективный способ сделать это. Любые идеи?

2 ответа

(расширенный для потомков)

Ваша проблема может быть разделена на две части: возвращение измененных файлов в их состояние в последнем фиксации и удаление любых дополнительных файлов, которые не принадлежат репозиторию:

git reset --hard HEAD

вернет ваши файлы обратно в состояние, которое у них есть в HEAD, удалив любые изменения (даже если они были этапными для выполнения)

git clean -f -d -x

удалит любые необработанные файлы или каталоги, включая проигнорированные файлы (спасибо @Jefromi)


Не является отдельным клоном репо для лучшего решения CI?

Вы просто извлекаете | clone from your-work-repo все зафиксированные изменения перед CI-заданием (без каких-либо артефактов и локальных изменений)

licensed under cc by-sa 3.0 with attribution.