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


115

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

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

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


Ответы:


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"

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


Это работает для указанного варианта использования, но не только добавляет удаление файлов. Он добавляет все файлы, которые были изменены каким-либо образом, поэтому обычно это не лучший способ удалить все удаленные файлы, если только это не единственные изменения, которые вы внесли.
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

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