Мой первоначальный коммит содержал некоторые файлы журнала. Я добавил *log
в свой .gitignore
, и теперь я хочу удалить файлы журнала из моего репозитория.
git rm mylogfile.log
удалит файл из хранилища, но также удалит его из локальной файловой системы.
Как я могу удалить этот файл из репозитория без удаления моей локальной копии файла?
Из man-файла:
Когда указано
--cached
, содержимое staged должно соответствовать либо вершине ветви, либо файлу на диске, что позволяет удалить файл только из индекса.
Таким образом, для одного файла:
git rm --cached mylogfile.log
и для одного каталога:
git rm --cached -r mydirectory
Чтобы удалить целую папку из репозитория (например, файлы Resharper), сделайте следующее:
git rm -r --cached folderName
Я зафиксировал некоторые файлы resharper и не хотел, чтобы они сохранялись для других пользователей проекта.
Вы также можете удалить файлы из репозитория на основе ваших .гитюдного без удаления их из локальной файловой системы :
git rm --cached `git ls-files -i -X .gitignore`
Или, как вариант, в Windows PowerShell с:
git rm --cached $(git ls-files -i -X .gitignore)
Как на мой ответ здесь: https://stackoverflow.com/questions/6313126/how-to-remove-a-directory-in-my-github-repository
Шаги, чтобы удалить папку
git rm -r --cached File-or-FolderName
git commit -m "Removed folder from repository"
git push origin master
Шаги, чтобы игнорировать эту папку в следующей совершает > в игнор эту папку из следующего обязывает сделать один файл в корне с именем .гитюдного > и положить, что имя папки в него. Вы можете положить столько, сколько вы хотите
.гитюдного файл будет выглядеть так
/FolderName
Кроме того, если вы коммитили конфиденциальные данные (например, файл с паролями), вам следует полностью удалить их из истории репозитория. Вот руководство, объясняющее, как это сделать: http://help.github.com/remove-sensitive-data/
Более общее решение:
.файл гитюдного
.Эхо mylogfile.журнал >> .гитюдного
ГИТ РМ -Р-Ф --кэшированные
.
в Git добавить .
в Git коммит -М "и сняли mylogfile.журнал"
в
git позволяет игнорировать эти файлы, при условии, что они остаются неизменными. Это это делается путем запуска обновление-индекс git --предположим-без изменений команда path/to/file.txt`. Однажды пометив файл как таковой, то git полностью игнорировать любые изменения в этом файле, они не показывают, когда статус выполнения команды git или git дифф, и они никогда не будут совершены.
(От https://help.github.com/articles/ignoring-files)
Следовательно, не удаляя его, но игнорируя изменения к нему навсегда. Я думаю, что это работает только локально, поэтому коллеги до сих пор можно увидеть изменения, если они выполните ту же команду, что и выше. (Все равно проверить это.)
Примечание: это'т отвечать на вопрос напрямую, но основан на последующие вопросы в комментариях и другие ответы.
Если вы хотите просто отслеживать файл, а не удалять из локального и удаленного РЕПО, а затем использовать команду все:
git update-index --assume-unchanged file_name_with_path
Выше ответы Я't работа для меня. Я использовала фильтр-ветвь`, чтобы удалить все файлы совершено.
Удалить файл из репозитория Git с:
git filter-branch --tree-filter 'rm file'
Удалить папку из репозитория Git с:
git filter-branch --tree-filter 'rm -rf directory'
Это удаляет файл или каталог из всех коммитов.
Вы можете указать фиксации с помощью:
git filter-branch --tree-filter 'rm -rf directory' HEAD
Или диапазон:
git filter-branch --tree-filter 'rm -rf vendor/gems' t49dse..HEAD
Спихнуть все на пульте, вы можете сделать:
git push origin master --force