gitignore после фиксации
у меня есть репозиторий git, размещенный на Github. После фиксации многих файлов, я понимаю, что мне нужно создать .gitignore и исключить .exe,.obj файлы.
однако будет ли он автоматически удалять эти зафиксированные файлы из репозитория? Есть ли способ заставить это сделать?
6 ответов:
нет вы не можете заставить файл, который уже зафиксирован в репо, быть удаленным только потому, что он добавлен в
.gitignoreвы должны
git rm --cachedудалить файлы, которые вы не хотите в репо. (--кэшируется, так как вы, вероятно, хотите сохранить локальную копию, но удалить из РЕПО. ) Поэтому, если вы хотите удалить все exe из вашего РЕПО, сделайтеgit rm --cached /\*.exe(обратите внимание, что звездочка * цитируется из оболочки - это позволяет git, а не оболочка, развернуть пути к файлам и подкаталогам)
однако будет ли он автоматически удалять эти зафиксированные файлы из репозитория?
нет. Даже с существующим
.gitignoreвы можете поставить "игнорируемые" файлы с помощью-f(сил) флаг. Если эти файлы уже отправлены, они не удаляются автоматически.git rm --cached path/to/ignored.exe
мне пришлось удалить .идея и целевые папки и после прочтения всех комментариев это сработало для меня:
git rm -r .idea git rm -r target git commit -m 'removed .idea folder'а затем нажмите на master
Если вы еще не нажали изменения:
git rm -r --cached . git add . git commit -m 'clear git cache' git push
однако будет ли он автоматически удалять эти зафиксированные файлы из репозитория?
нет.
"лучший" рецепт, чтобы сделать это с помощью
git filter-branchкак написано здесь:страница руководства для Git-filter-branch содержит исчерпывающие примеры.
Примечание вы будете переписывание истории. Если вы опубликовали какие-либо изменения, содержащие случайно добавленные файлы, это может создать проблемы для пользователей этих общедоступных ветвей. Сообщите им, или, возможно, подумайте о том, как сильно вам нужно удалить файлы.
Примечание при наличии тегов, всегда используйте до
git filter-branch. Это никогда не помешает и избавит вас от головной боли, когда вы поймете позже, что вам нужно
даже после удаления файла(ов), а затем фиксации, вы все равно будете иметь эти файлы в истории. Чтобы удалить их, рассмотрите возможность использования BFG Repo-Cleaner. Это альтернатива git-filter-branch.
Comments