Подтвердить что ты не робот

'' 'git clean' '' не удаляет подкаталоги (не рекурсивно)

У меня проблемы с git clean. Рассмотрим следующий сценарий:

git status -su
?? file_1
?? xyz/file_2

git clean -f
Not removing xyz/file_2
Removing file_1

Я не хочу удалять папку xyz, но я хочу удалить file_2 внутри нее.

Почему git clean не работает рекурсивно?

4b9b3361

Ответ 1

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

http://gitready.com/beginner/2009/01/16/cleaning-up-untracked-files.html

Ответ 2

Кроме того, git clean не работает над деревом каталогов. У вас есть

> git status
Untracked files:
  ../file1.orig
  ../../file2.orig

git clean -df ничего не сделал бы в этом состоянии. Вы должны "cd" в корне проекта и снова запустить "git clean -df".

Ответ 3

попробуйте следующее:

git clean -xdf

сообщите мне, если это сработало.

Ответ 4

Возможно, у вас есть каталог xyz в вашем файле .gitignore где-нибудь? Вы можете переопределить это поведение, используя переключатель -x на clean. Кроме того, если каталог xyz не отслеживается (ничего не отслеживается в нем), он не будет удален, если вы не передадите параметр -d.

Ответ 5

Обратите внимание, что в вдовах даже git clean -xdf может потерпеть неудачу, молча пропуская путь, когда он не может lstat() его; сейчас (Git 2.23, Q3 2019), он выдает предупреждение.

См. коммит b09364c (18 июля 2019 г.) от Йоханнеса Шинделина (dscho).
Помогли: Рене Шарф (rscharfe), СЗЕДЕР Габор (szeder) и Хунио С. Хамано (gitster).
(Merged by Junio C Hamano -- [TG46] -- in commit f3d508f, 25 Jul 2019)

clean: показать сообщение об ошибке, если путь слишком длинный

При сбое lstat() git clean прерывается без сообщения об ошибке, оставляя пользователя довольно озадаченным.

В частности, в Windows, где максимальная длина пути по умолчанию довольно мала (хотя во многих случаях есть способы обойти это ограничение), очень важно, чтобы пользователям было дано указание, почему их команда не выполнена из-за слишком длинных путей, когда она это сделала..

Этот тестовый пример гарантирует, что выдается предупреждение, которое помогло бы пользователю, сообщившему о проблеме git-for-windows/git 521

Обратите внимание, что мы временно установили core.longpaths = false в регрессионном тесте; это обеспечивает прямую совместимость с функцией core.longpaths, которая еще не была расширена из Git для Windows.