Resync git repo с новым файлом .gitignore - PullRequest
171 голосов
/ 16 августа 2011

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

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

Ответы [ 2 ]

332 голосов
/ 16 августа 2011

Решение, упомянутое в " .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>"
9 голосов
/ 17 августа 2011

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

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

git rm –cached `git ls-files -i –exclude-standard`
git commit -m 'clean up'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...