Git: Как удалить все неотслеживаемые файлы?


40

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

я могу использовать

git status

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


1
Не могли бы вы просто проверить все файлы в другом месте на вашем компьютере, а затем удалить старую версию?
Nifle

1
Конечно могу, но разве нет более простого способа?
RoflcoptrException

Ответы:


55

Если у вас есть это в игнорировании, используйте git clean -xf. Вы можете сделать, git clean -dfно это также удалит неотслеживаемые каталоги. Используйте -nдля пробного прогона.

См очистки без отслеживания


3
-x игнорирует игнорирует ..
UpAndAdam

8
-xfудалит и проигнорированные файлы, и это, вероятно, НЕ то, что вы хотите. Используйте -nfи продолжайте с осторожностью. См: stackoverflow.com/questions/61212/...
Mr_and_Mrs_D

2
Помните, что это может удалить ваши папки среды / IDE (например, .vagrant или .idea (phpstorm))
timhc22

1
ОСТОРОЖНО! gitignored файлы будут удалены навсегда. -100
Сепер

5
git clean -f

8
Возможно, имеет смысл добавить значение этой команды, чтобы сделать этот ответ автономным.
NN

5

Пользовательский интерактивный подход:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i для интерактивного
-f для файла
-d для каталога

Примечание: Добавьте -n или --dry-run, чтобы просто проверить, что он будет делать.


3

Есть тонкость, о которой стоит упомянуть git clean -fв отношении неотслеживаемых файлов и каталогов. Если у вас есть неотслеживаемый каталог, содержащий файлы, которые, тем более, не отслеживаются, то git clean -fНЕ удалит эти неотслеживаемые файлы.

Другими словами, это не всегда тот случай, git clean -fкогда удаляются все неотслеживаемые файлы. Лучшим объяснением git clean -fявляется то, что он удаляет все неотслеживаемые файлы, которые не находятся в неотслеживаемых каталогах.

git clean -f -d должен использоваться для удаления неотслеживаемых файлов, которые находятся в неотслеживаемых каталогах, и, по-видимому, невозможно удалить все неотслеживаемые файлы без удаления также неотслеживаемых каталогов, которые содержат только неотслеживаемые файлы.

Используйте, git clean -f -d -nчтобы ДЕЙСТВИТЕЛЬНО увидеть, что вы хотите сделать, чтобы восстановить рабочий каталог в том виде, в котором он был бы без каких-либо неотслеживаемых файлов. Затем используйте git clean -f -dдля этого.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.