gitignore после фиксации



у меня есть репозиторий git, размещенный на Github. После фиксации многих файлов, я понимаю, что мне нужно создать .gitignore и исключить .exe,.obj файлы.



однако будет ли он автоматически удалять эти зафиксированные файлы из репозитория? Есть ли способ заставить это сделать?

642   6  

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

    Ничего не найдено.