2013-07-23 6 views
0

При использовании мерзавец, я проверил конкретную ревизию в своей основной отрасли:Выдана старая ревизия в git, а затем вернулась к последней версии, но удаленные файлы из старой версии все еще находятся в локальном каталоге?

checkout <branch hash> .

Я только сделал это, чтобы взглянуть на некоторые предыдущие файлы, я не сделал никаких изменений. Затем я попытался сбросить текущее состояние до последней версии. К сожалению, я попытался выполнить несколько команд, потому что не был уверен, изначально ли он работал; команды включены:

checkout master .

checkout HEAD .

reset HEAD --hard

Я не был уверен, что, если он работал сначала из-за определенное поведение, указанной в предыдущий файл старой ревизии присутствовала.

Тогда я понял, что мои измененные и новые файлы действительно были восстановлены до текущей версии, однако файлы, которые я удалил между старой ревизией и текущей версией, все еще находятся в моем локальном каталоге. Это должно произойти? Я полагаю, что никто не хотел бы, чтобы старые, удаленные файлы присутствовали после возвращения к текущей ревизии, и все же это выглядит так.

Мне было интересно, если я сделал что-то неправильно для этого, или если есть другая команда, которую я могу использовать для удаления этих нежелательных файлов из временно проверенной версии?

+0

Ваша проблема была '.' путь в конце вашей проверки: вы сказали ей, чтобы проверить, что путь,' .', т.е. рекурсивно весь текущий каталог, из этой фиксации, без коммутация. Таким образом, он добавил всю команду «master» в вашу рабочую строку и индекс. – jthill

ответ

1

См: GIT: When checking out an alternative branch, I want to clear ignored files

Я считаю, что вы ищете команду git clean. Если вы сделаете быстрый git clean -nd <path>, в нем будут перечислены все незаписанные/удаленные файлы, которые будут удалены при реальном запуске команды.

Если вы уверены, что включает в себя все файлы, которые хотите удалить, выполните команду git clean -df <path>.

Ссылка: http://gitready.com/beginner/2009/01/16/cleaning-up-untracked-files.html

+1

удивительный, и спасибо за ссылку! Я понимаю, почему поведение, которое я наблюдаю, теперь является дефолтом. Просто что-то примечание, флагом -f также требуется для фактической команды удаления, иначе я получаю: «fatal: clean.requireForce по умолчанию - true, а ни -n, ни -f, отказано в очистке». поэтому 'git clean -df ' сделал именно трюк! – user1167662

+1

@ user1167662 Спасибо; Я обновил ответ, чтобы кто-то еще посмотрел на него, увидит его. –