Удаление файлов с помощью Git / GitHub

115

Во-первых, я новичок в Git.

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

Кто-нибудь из пользователей Git знает команду для обновления индекса?

Zack
источник
См. Также stackoverflow.com/questions/492558/…
Петр Гладких

Ответы:

226

Я думаю, что это был бы более простой способ делать то, что вы хотите:

git add . -A 

Тогда вы просто сделаете:

git commit -m "removed some files"

Как указано выше.

Сэмюэл Микель Боулз
источник
Спасибо. И я только что написал псевдоним, bashчтобы сделать это. Удивительный.
Zack
12
Что делает флаг -A?
Kim Prince
1
@KimPrince - Согласно kernel.org , "-A --all Подобно -u, но сопоставляет <filepattern> с файлами в рабочем дереве в дополнение к индексу. Это означает, что он будет находить новые файлы, а также размещать измененное содержимое и удаление файлов, которых больше нет в рабочем дереве ".
j08691
3
@KimPrince git help addрасскажет вам, что -Aозначает, а также перечислит все другие переключатели.
Марцин Орловски
1
Это намного больше, чем просто удаление удаленных файлов. Он добавляет все файлы, которые были изменены в каталоге, так что это не совсем удовлетворительный ответ.
Alex
19

Вы можете увидеть удаленные файлы, которые все еще отслеживаются:

git ls-files --deleted

Чтобы удалить файлы из ветки, вы можете сделать что-то вроде этого:

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

Откуда man git-rm:

Удалите файлы из индекса или из рабочего дерева и индекса. git-rm не удалит файл только из вашего рабочего каталога. (Невозможно удалить файл 13 только из рабочего дерева и при этом сохранить его в индексе; используйте / bin / rm, если хотите.)

Наконец, чтобы зафиксировать «удаление», сделайте что-нибудь вроде:

git commit -m "removed some files"
Мик
источник
Затем вам нужно зафиксировать изменение -git commit -m "removed some files"
Джеймс Полли
17

Я не знаю, было ли это добавлено в git после предыдущих ответов, но я просто использовал

git add -u
git commit -m "Removed some files"

чтобы добиться того же.

Gareth
источник
Это работает для указанного варианта использования, но не только добавляет удаление файлов. Он добавляет все файлы, которые были изменены каким-либо образом, поэтому обычно это не лучший способ удалить все удаленные файлы, если только это не единственные изменения, которые вы внесли.
Alex
2
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all
git commit -m "Removed deletefile.name"
git push origin master --force

Замените deletefile.name на файл, который нужно удалить. Для более подробного объяснения прочтите красивую статью https://help.github.com/articles/remove-sensitive-data

Чават Випул С
источник