Видалення файлів за допомогою Git / GitHub


115

По-перше, я новачок у Git.

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

Будь-які користувачі Git знають команду оновити індекс?


Відповіді:


226

Я думаю, це був би простіший спосіб зробити те, що ви хочете:

git add . -A 

Тоді ви просто зробите:

git commit -m "removed some files"

Як зазначалося вище.


Дякую. І я щойно писав псевдонім, bashщоб зробити вищесказане. Дивовижний.
Зак

12
Що робить прапор -A?
Кім Принс

1
@KimPrince - За даними kernel.org , "-A - всім подобається -u, але порівнюйте <filepattern> з файлами в робочому дереві на додаток до індексу. Це означає, що він знайде нові файли, а також інсценізує змінений вміст та видалення файлів, які вже не є у робочому дереві. "
j08691

3
@KimPrince git help addрозповість, що -Aозначає, а також перелічить усі інші комутатори.
Марцін Орловський

1
Це робить набагато більше, ніж просто видалення видалених файлів. Він додає всі файли, які змінені в каталозі, тому це насправді не є задовільною відповіддю.
Олексій

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"

досягти того самого.


Це працює для переліченого випадку використання, але це не просто додає видалення файлів. Він додає всі файли, які були змінені будь-яким чином, тому це, як правило, не є гарним способом видалення всіх видалених файлів, якщо це не єдині внесені вами зміни.
Олексій

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.