Как удалить несколько удаленных файлов в репозитории Git - PullRequest
228 голосов
/ 15 мая 2011

Я удалил некоторые файлы, и состояние git отображается, как показано ниже.

Я зафиксировал и нажал.

GitHub по-прежнему показывает удаленные файлы в хранилище.Как я могу удалить файлы в репозитории GitHub?

# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    modules/welcome/language/english/kaimonokago_lang.php
#   deleted:    modules/welcome/language/french/kaimonokago_lang.php
#   deleted:    modules/welcome/language/german/kaimonokago_lang.php
#   deleted:    modules/welcome/language/norwegian/kaimonokago_lang.php

Если я использую git rm, это дает следующее.

usage: git rm [options] [--] <file>...

-n, --dry-run         dry run
-q, --quiet           do not list removed files
--cached              only remove from the index
-f, --force           override the up-to-date check
-r                    allow recursive removal
--ignore-unmatch      exit with a zero status even if nothing matched

Ответы [ 16 ]

2 голосов
/ 17 августа 2015
git add -u .

git add --update .
2 голосов
/ 29 сентября 2013

Если вы хотите удалить их все, используя «git rm».Вот что я делаю:

git ls-files --deleted -z | xargs -0 git rm

Этот запрос выводит список всех удаленных файлов и удаляет их из вашего репозитория git.Надеюсь, это поможет.

2 голосов
/ 12 ноября 2012
git status | sed 's/^#\s*deleted:\s*//' | sed 's/^#.*//' | xargs git rm -rf
1 голос
/ 28 августа 2013

У меня была проблема с призрачными файлами, появляющимися в моем репо после того, как я удалил их и наткнулся на эту аккуратную команду!

git add -A

По сути, это то же самое, что и git add -a и git add -u вместе, но это чувствительно к регистру.Я получил его по этой удивительной ссылке (эта ссылка сейчас указывает на версию на archive.org, поскольку по состоянию на июнь 2016 года оригинал преобразован в страницу со спамом / фишингом)

1 голос
/ 09 апреля 2013

Встроенная функция очистки также может быть полезна ...

git clean -fd
0 голосов
/ 21 марта 2015

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

git status --porcelain | awk '/^.D .*$/ {print $0}' | sed 's/.D \(.*\)/\1/' | tr -d '"' | xargs -I {} git rm '{}'

убедитесь, что вы проверили это с опцией git --dry-run перед запуском следующего:

git status --porcelain | awk '/^.D .*$/ {print $0}' | sed 's/.D \(.*\)/\1/' | tr -d '"' | xargs -I {} git rm --dry-run '{}'

объяснение:

git status --porcelain

Это печатает что-то вроде D "/ путь к папке / путь к файлу", что происходит только при наличии пробелов в именах путей

awk '/^.D .*$/ {print $0}'

соответствует только строкам, которые начинаются с "D"

sed 's/ D \(.*\)/\1/'

удаляет "D" в начале каждой строки

tr -d '"'

удаляет кавычки, если есть

xargs -I {} git rm '{}'

определить переменные имени файла как {} запустить имя файла в git rm, заключенном в одинарные кавычки, чтобы убедиться, что оно поддерживает имена файлов с пробелами.

...