У меня есть Git-репозиторий, размещенный на Github. После совершения большого количества файлов, я понял , что мне нужно создать .gitignore
и исключить .exe
, .obj
файлы.
Однако будет ли он автоматически удалять эти зафиксированные файлы из хранилища? Есть ли способ заставить это?
Ответы:
Нет, вы не можете принудительно удалить файл, уже зафиксированный в репо, только потому, что он добавлен в
.gitignore
Вы должны
git rm --cached
удалить файлы, которые вы не хотите в репо. (- кэшировано, поскольку вы, вероятно, хотите сохранить локальную копию, но удалить из репозитория.) Поэтому, если вы хотите удалить все исполняемые файлы из репозитория, сделайте(Обратите внимание, что звездочка * заключена в кавычки из оболочки - это позволяет git, а не оболочке, расширять пути к файлам и подкаталогам)
источник
git rm /\*.exe
он удалит все exe в вашем репоgit
.git pull
, увидят, что их файлы удалены.Нет. Даже с существующим
.gitignore
вы можете ставить «игнорируемые» файлы с-f
флагом (force). Если их файлы уже зафиксированы, они не удаляются автоматически.источник
Если вы еще не отправили изменения:
источник
Мне пришлось удалить папки .idea и target, и после прочтения всех комментариев это сработало для меня:
а затем нажмите, чтобы освоить
источник
.idea
была моя проблема, я думаю, что это тоже ваша:)
Нет.
«Лучший» рецепт для этого - использовать,
git filter-branch
как написано здесь:Страница man для git-filter-branch содержит подробные примеры.
Примечание. Вы будете переписывать историю. Если вы опубликовали какие-либо ревизии, содержащие случайно добавленные файлы, это может создать проблемы для пользователей этих общедоступных веток. Сообщите им, или, возможно, подумайте, насколько сильно вам нужно удалить файлы.
Примечание. При наличии тегов всегда используйте
--tag-name-filter cat
опцию дляgit filter-branch
. Это никогда не причиняет боль и избавит вас от головной боли, когда вы поймете, что позже вам это нужноисточник
--all
чтобы переписать все (локальные) ветки сразуДаже после того, как вы удалите файл (ы), а затем подтвердите, эти файлы останутся в истории. Чтобы удалить их, рассмотрите возможность использования BFG Repo-Cleaner . Это альтернатива git-filter-branch.
источник