Resync git repo с новым файлом .gitignore

Возможно ли обновить репозиторий git после обновления файла gitignore?

Я просто добавил больше игнорирования (?) к моему gitignore и хотел бы удалить вещи, уже находящиеся в репо, соответствующие новому файлу.

Ответ 1

Решение, упомянутое в .gitignore файле, не игнорирующем, немного экстремально, но должно работать:

# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"

( обязательно зафиксируйте свои изменения, которые вы хотите сохранить, чтобы избежать каких-либо инцидентов как jball037 ниже.
Опция --cached сохранит ваши файлы нетронутыми на вашем диске, хотя.)

У вас также есть другое более мелкое решение в блоге " Создание Git игнорировать уже отслеживаемые файлы:

git rm --cached `git ls-files -i --exclude-standard`

Bassim предлагает в своем редактировании:

Файлы с пробелом в своих дорожках

Если вы получите сообщение об ошибке, например fatal: path spec '...' did not match any files, в пути могут быть файлы с пробелами.

Вы можете удалить все остальные файлы с помощью опции --ignore-unmatch:

git rm --cached --ignore-unmatch `git ls-files -i --exclude-standard`

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

git rm --cached "<path.to.remaining.file>"

Ответ 2

Я мог бы неправильно понять, но вы пытаетесь удалить недавно проигнорированные файлы или не хотите игнорировать новые изменения этих файлов? В этом случае дело работает.

Если вы хотите удалить ранее проигнорированные файлы, используйте

git rm –cached `git ls-files -i –exclude-standard`
git commit -m 'clean up'