Как удалить локальные (неотслеживаемые) файлы из текущего рабочего дерева Git
Как удалить ненужные локальные файлы из текущего рабочего дерева?
Ответы
Ответ 1
Согласно документации Git git clean
Удалить неотслеживаемые файлы из рабочего дерева
Шаг 1 - показать, что будет удалено с помощью опции -n
:
# Print out the list of files which will be removed (dry run)
git clean -n
Чистый шаг - будьте осторожны: это приведет к удалению файлов:
# Delete the files from the repository
git clean -f
- Чтобы удалить каталоги, запустите
git clean -f -d
или git clean -fd
- Чтобы удалить проигнорированные файлы, запустите
git clean -f -X
или git clean -fX
- Чтобы удалить проигнорированные и не проигнорированные файлы, запустите
git clean -f -x
или git clean -fx
Обратите внимание на регистр различий в X
для двух последних команд.
Если в вашей конфигурации для clean.requireForce
установлено значение "true" (по умолчанию), необходимо указать -f
, иначе ничего не произойдет.
Снова смотрите git-clean
документы для получения дополнительной информации.
параметры
-f
, --force
Если переменная конфигурации Git clean.requireForce не установлена в false, git clean не будет запускаться, если не указано -f
, -n
или -i
.
-x
Не используйте стандартные правила игнорирования, прочитанные из .gitignore (согласно каталог) и $GIT_DIR/info/exclude
, но все равно используйте игнорирование правила, заданные с опциями -e
. Это позволяет удалить все неотслеживаемые файлы, в том числе строительные продукты. Это может быть использовано (возможно, в сочетании с git reset), чтобы создать нетронутую рабочую директорию, чтобы проверить чистоту строить.
-X
Удалите только файлы, игнорируемые Git. Это может быть полезно для восстановления все с нуля, но сохраняйте созданные вручную файлы.
-n
, --dry-run
На самом деле ничего не удаляйте, просто покажите, что будет сделано.
-d
Удалите неотслеживаемые каталоги в дополнение к неотслеживаемым файлам. Если нетронутым каталогом управляет другой Git-репозиторий, он по умолчанию не удаляется. Используйте опцию -f
дважды, если вы действительно хотите удалить такой каталог.
Ответ 2
Используйте git clean -f -d
, чтобы убедиться, что каталоги также удалены.
-n, -dry-run
На самом деле ничего не удаляйте, просто покажите, что будет сделано.
-d
Удалите неотслеживаемые каталоги в дополнение к неотслеживаемым файлам. Если неотслеживаемый каталог управляется другим Git-репозиторием, по умолчанию он не удаляется. Используйте параметр -f дважды, если вы действительно хотите удалить такой каталог.
Затем вы можете проверить, действительно ли ваши файлы исчезли с git status
.
Ответ 3
Я удивлен, что никто не упоминал об этом раньше:
git clean -i
Это означает интерактивность, и вы получите краткий обзор того, что будет удалено, предлагая вам возможность включить/исключить затронутые файлы. В целом, все еще быстрее, чем запуск обязательного --dry-run
до реальной очистки.
Вам нужно будет бросить в -d
, если вы также захотите позаботиться о пустых папках. В конце он делает хороший псевдоним:
git iclean
Таким образом, дополнительное ручное проведение интерактивных команд может утомиться для опытных пользователей. В эти дни я просто использую уже упомянутый git clean -fd
Ответ 4
git-clean
- удалить необработанные файлы из рабочего дерева
Ответ 5
Если untracked-каталог представляет собой собственный хранилище git (например, подмодуль), вам нужно дважды использовать -f
:
git clean -d -f -f
Ответ 6
Простой способ удалить неотслеживаемые файлы
Чтобы удалить все неотслеживаемые файлы, простой способ - сначала добавить их все и сбросить репозиторий, как показано ниже.
git add --all
git reset --hard HEAD
Ответ 7
Мне нравится git stash push -u
потому что вы можете отменить их все с помощью git stash pop
.
РЕДАКТИРОВАТЬ: Также я нашел способ показать неотслеживаемый файл в тайнике (например, git show [email protected]{0}^3
) fooobar.com/questions/507/...
EDIT2: git stash save
устарело в пользу push
. Спасибо @script-волк.
Ответ 8
Это то, что я всегда использую:
git clean -fdx
Для очень большого проекта вы можете запустить его несколько раз.
Ответ 9
git-clean - это то, что вы ищете. Он используется для удаления необработанных файлов из рабочего дерева.
Ответ 10
Если необходимо удалить неподписанные файлы из определенного подкаталога,
git clean -f {dir_path}
И комбинированный способ удаления невоспроизводимых файлов/файлов и игнорируемых файлов.
git clean -fxd {dir_path}
после этого вы будете модифицировать файлы только в git status
.
Ответ 11
git clean -fd
удаляет каталог
git clean -fX
удаляет игнорируемые файлы
git clean -fX
удаляет игнорируемые и не проигнорированные файлы
можно использовать все вышеперечисленные опции в комбинации как
git clean -fdXx
проверить git руководство для получения дополнительной справки
Ответ 12
Удалите все лишние папки и файлы в этом репо + подмодули
Это приводит вас в то же состояние, что и свежий клон.
git clean -ffdx
Удалите все дополнительные папки и файлы в этом репо, но не его подмодули
git clean -fdx
Удалить только лишние папки, но не файлы (например, папка сборки)
git clean -fd
Удалите лишние папки + пропущенные файлы (но не новые файлы)
Если файл не был проигнорирован и еще не зарегистрирован, он остается. Обратите внимание на заглавную X.
git clean -fdX
Новый интерактивный режим
git clean
Ответ 13
ОК, удалить ненужные неотслеживаемые файлы и папки легко, используя git
в командной строке, просто сделайте это так:
git clean -fd
Дважды проверьте, прежде чем делать это, так как он будет удалять файлы и папки, не делая истории...
Также в этом случае -f
обозначает силу, а -d
обозначает каталог...
Итак, если вы хотите удалить только файлы, вы можете использовать только -f
:
git clean -f
Если вы хотите удалить (каталоги) и файлы, вы можете удалить только неотслеживаемые каталоги и файлы, например:
git clean -fd
Также вы можете использовать флаг -x
для включения файлов, которые игнорируются git. Это было бы полезно, если вы хотите удалить все.
А добавление флага -i
заставляет git запрашивать разрешение на удаление файлов один за другим на ходу.
Если вы не уверены и хотите сначала все проверить, добавьте флаг -n
.
Используйте -q
если вы не хотите видеть какой-либо отчет после успешного удаления.
Я также создаю изображение ниже, чтобы сделать его более запоминающимся, особенно я видел, как многие люди путают -f
с очисткой папки или как-то путают!
Ответ 14
Лучше всего использовать: git clean
git clean -d -x -f
Это удаляет ненужные файлы, включая каталоги (-d)
и файлы, игнорируемые git (-x)
.
Также замените аргумент -f
на -n
, чтобы выполнить интерактивный режим dry-run
или -i
, и он скажет вам, что будет удалено.
Ответ 15
Пользовательский интерактивный подход:
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/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/arsdumpgenerator/s3/ [y/N]? y
-i для интерактивных
-f для силы
-d для каталога
-x для игнорируемых файлов (добавьте, если требуется)
Примечание: Добавить -n или - сухим, чтобы просто проверить, что он будет делать.
Ответ 16
git clean -f -d -x $(git rev-parse --show-cdup)
применяется чисто для корневого каталога, независимо от того, где вы вызываете его в дереве каталогов репозитория. Я использую его все время, так как он не заставляет вас покидать папку, в которой вы сейчас работаете, и позволяет очищать и фиксировать право с того места, где вы находитесь.
Убедитесь, что флаги -f
, -d
, -x
соответствуют вашим потребностям:
-d
Remove untracked directories in addition to untracked files. If an
untracked directory is managed by a different Git repository, it is
not removed by default. Use -f option twice if you really want to
remove such a directory.
-f, --force
If the Git configuration variable clean.requireForce is not set to
false, git clean will refuse to delete files or directories unless
given -f, -n or -i. Git will refuse to delete directories with .git
sub directory or file unless a second -f is given. This affects
also git submodules where the storage area of the removed submodule
under .git/modules/ is not removed until -f is given twice.
-x
Don't use the standard ignore rules read from .gitignore (per
directory) and $GIT_DIR/info/exclude, but do still use the ignore
rules given with -e options. This allows removing all untracked
files, including build products. This can be used (possibly in
conjunction with git reset) to create a pristine working directory
to test a clean build.
Существуют и другие флаги, просто выберите git clean --help
.
Ответ 17
Для меня только после работы:
git clean -ffdx
Во всех остальных случаях я получал сообщение "Skipping Directory" для некоторых подкаталогов.
Ответ 18
Жизнеспособность для такой ситуации я только что придумал и попробовал (что прекрасно работает):
git add .
git reset --hard HEAD
Осторожно! Обязательно скопировать любые необходимые изменения (даже в неискренные файлы) перед выполнением этого.
Ответ 19
Если вы просто хотите удалить файлы, перечисленные как не проверенные 'git status'
git stash save -u
git stash drop "[email protected]{0}"
Я предпочитаю это "git clean", потому что "git clean" удалит файлы
игнорируется git, поэтому вашей следующей сборке придется перестроить все
и вы также можете потерять настройки IDE.
Ответ 20
Чтобы узнать, что будет удалено до фактического удаления:
git clean -d -n
Он выведет что-то вроде:
Удалит sample.txt
Чтобы удалить все, перечисленные в выводе предыдущей команды:
git clean -d -f
Он выведет что-то вроде:
Удаление sample.txt
Ответ 21
Чтобы удалить неиспользуемые файлы, вы должны сначала использовать команду для просмотра файлов, на которые будет влиять очистка
git clean -fdn
Это покажет вам список файлов, которые будут удалены. Теперь, чтобы фактически удалить эти файлы, используйте следующую команду:
git clean -fd
Ответ 22
Кто-то должен действительно упомянуть:
git clean [<options>]
Я прав?
Ответ 23
Будьте осторожны при выполнении команды ` git clean`.
Всегда используйте -n
перед запуском фактической команды, показывая, какие файлы будут удалены.
git clean -n -d
git clean -f -d
По умолчанию git clean
будет удалять только неиспользуемые файлы, которые не игнорируются. Любой файл, который соответствует шаблону в ваших .gitignore или других файлах игнорирования, не будет удален. Если вы хотите также удалить эти файлы, вы можете добавить команду -x
в чистую команду.
git clean -f -d -x
Существует также интерактивный режим -i
с чистой командой
git clean -x -i
В качестве альтернативы
Если вы не на 100% уверены, что удаление вашей незавершенной работы безопасно, вы можете вместо этого использовать stashing
git stash --all
Он также очистит ваш каталог, но даст вам гибкость для извлечения файлов в любой момент времени с помощью stash с применить или поп. Затем в более позднем пункте вы можете очистить свой тайник, используя:
git stash drop // or clean
Ответ 24
git clean -f to remove untracked files from working directory.
Здесь я рассмотрел некоторые основы в своем блоге, git-intro-basic-команды
Ответ 25
ued Команда Удаление необработанных файлов из git docs git clean
git clean - удалить неработающие файлы из рабочего дерева
Предлагаемый метод: Режим взаимодействия с помощью git clean -i
поэтому мы можем контролировать его. посмотрим оставшиеся доступные варианты.
Доступные параметры:
git clean
-d -f -i -n -q -e -x -X (can use either)
Объяснение:
1. -d
Удалите ненужные каталоги в дополнение к необработанным файлам. Если неподписанный каталог управляется другим хранилищем git, он не удаляется по умолчанию. Используйте параметр -f дважды, если вы действительно хотите удалить такой каталог.
2. -f, --force
Если переменная конфигурации git clean.requireForce не установлена в false, git clean откажется запускаться, если не указано -f, -n или -i.
3. -i, --interactive
Показать, что будет сделано и очистить файлы в интерактивном режиме. Подробнее см. "Интерактивный режим".
4. -n, --dry-run
На самом деле ничего не удаляйте, просто покажите, что будет сделано.
5. -q, --quiet
Будьте спокойны, только сообщайте об ошибках, но не удаляйте файлы.
6. -e, --exclude =
Помимо найденных в .gitignore (для каждого каталога) и $GIT_DIR/info/exclude, также рассмотрите эти шаблоны в набор действующих правил игнорирования.
7. -x
Не используйте стандартные правила игнорирования, считанные из .gitignore (для каждого каталога) и $GIT_DIR/info/exclude, но все равно используйте игнорирование правила, заданные с параметрами -e. Это позволяет удалить все необработанные файлы, включая сборку продуктов. Это можно использовать (возможно, в совместно с git reset), чтобы создать нетронутый рабочий каталог для проверки чистой сборки.
8. -X
Удалить только файлы, игнорируемые Git. Это может быть полезно для восстановления всего с нуля, но сохранить вручную созданные файлы.
Ответ 26
Обычная команда git clean
не удаляет неиспользуемые файлы с помощью git version 2.9.0.windows.1
.
$ git clean -fdx # doesn't remove untracked files
$ git clean -fdx * # Append star then it works!
Ответ 27
Мы можем легко удалить локальные неотслеживаемые файлы из текущего рабочего дерева git, используя приведенные ниже комментарии git.
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
Пример:
git reset --hard HEAD
Ссылки:
- https://git-scm.com/docs/git-reset
- Как мне использовать 'git reset --hard HEAD', чтобы вернуться к предыдущему коммиту?
- Сбросить ветку локального репозитория, чтобы она была похожа на HEAD удаленного репозитория
- https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
Ответ 28
Очистить git-репозиторий и все подмодули рекурсивно
Следующая команда рекурсивно очистит текущий репозиторий git и все его подмодули:
(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
Ответ 29
oh-my-zsh с zsh предоставляет эти отличные псевдонимы через плагин git. Их также можно использовать в bash.
gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'
-
gclean
удаляет неотслеживаемые каталоги в дополнение к неотслеживаемым файлам. -
gpristine
жестко сбрасывает локальные изменения, удаляет неотслеживаемые каталоги, неотслеживаемые файлы и не использует стандартные правила игнорирования, считываемые из .gitignore (для каждого каталога) и $ GIT_DIR/info/exclude, но все же использует правила игнорирования, заданные с помощью -e опции. Это позволяет удалить все неотслеживаемые файлы, включая продукты сборки. Это может быть использовано (возможно, в сочетании с git reset) для создания первичного рабочего каталога для тестирования чистой сборки.
Ответ 30
git clean -f
удалит неотслеживаемые файлы из текущего git
git clean -fd
когда вы хотите удалить каталоги и файлы, это приведет к удалению только неотслеживаемых каталогов и файлов