Мой первоначальный коммит содержал несколько файлов журнала. Я добавил *log
в свой .gitignore
, и теперь я хочу удалить файлы журнала из моего хранилища.
git rm mylogfile.log
удалит файл из хранилища, но также удалит его из локальной файловой системы.
Как я могу удалить этот файл из репозитория, не удаляя мою локальную копию файла?
git
repository
remote-server
delete-file
git-rm
mveerman
источник
источник
Ответы:
Из файла man :
Итак, для одного файла:
и для одного каталога:
источник
svn rm --keep-local
.git pull
если вы находитесь за коммитом послеgit rm
git commit -m "Commit message"
иgit push
. Если у вас есть какие-либо другие поэтапные изменения (проверьте с помощьюgit status
), они также будут зафиксированы в это время.git rm --cached mylogfile.log
и удаляю файл из репозитория. Чтобы не потерять файл в продуктивной системе, я делаю резервную копию файла и вытащу после этого. Файл будет удален, как упоминалось ранее, и его необходимо скопировать обратно из резервной копии. Это довольно больно, но я не нашел лучшего решения этой проблемы.Чтобы удалить всю папку из репозитория (например, файлы Resharper), сделайте следующее:
Я зафиксировал некоторые файлы для изменения резкости и не хотел, чтобы они сохранялись для других пользователей проекта.
источник
Git Push repo branch
чтобы фактически удалить файлы с пульта.Вы также можете удалить файлы из хранилища на основе вашего .gitignore, не удаляя их из локальной файловой системы:
Или, в качестве альтернативы, в Windows Powershell:
источник
git ls-files -i -X .gitignore | xargs -I{} git rm --cached "{}"
. Пожалуйста, подумайте об изменении или добавлении этого решения к ответу здесь, потому что это отличный инструмент для ....gitkeep
которые сохраняют пустую папку в хранилище. Например..gitignore
содержать папкуuploads
и репо вынужден отслеживать.gitkeep
. Удалив все из репо подuploads
него, удалят также.gitkeep
.Согласно моему ответу здесь: /programming/6313126/how-to-remove-a-directory-in-my-github-repository
Чтобы удалить папку / каталог или файл только из репозитория git, а не из локального, попробуйте 3 простых шага.
Шаги по удалению каталога
Действия по игнорированию этой папки в следующих коммитах
Файл .gitignore будет выглядеть так
источник
Кроме того, если вы передали конфиденциальные данные (например, файл, содержащий пароли), вы должны полностью удалить их из истории репозитория. Вот руководство, объясняющее, как это сделать: http://help.github.com/remove-sensitive-data/
источник
Более общее решение:
Редактировать
.gitignore
файлECHO mylogfile.log >> .gitignore
Удалить все элементы из индекса.
git rm -r -f --cached .
Перестрой индекс.
git add .
Сделать новый коммит
git commit -m "Removed mylogfile.log"
источник
rm --cashed
состоит в том, что он в конечном итоге удалит файл, когда вы нажмете - правильно? И это не то, что люди хотят, когда говорят «Удалить файл из хранилища, не удаляя его из локальной файловой системы ». Теперь, почему принятое выше решение мне не подходит - возможно, ОП работал один и никогда не работал? Не знаю. Я понимаю, что GitHub "когда-то толкнул всегда" проблема ofc(Из https://help.github.com/articles/ignoring-files )
Следовательно, не удаляя это, но игнорируя изменения к этому навсегда. Я думаю, что это работает только локально, поэтому коллеги по-прежнему могут видеть изменения, если они не выполняют ту же команду, что и выше. (Тем не менее, необходимо проверить это.)
Примечание. Это не дает прямого ответа на вопрос, а основано на последующих вопросах в комментариях к другим ответам.
источник
Если вы хотите просто распаковать файл и не удалять его из локального и удаленного репозитория, используйте эту команду:
источник
Приведенные выше ответы не сработали для меня. Я использовал,
filter-branch
чтобы удалить все зафиксированные файлы.Удалите файл из репозитория git:
Удалите папку из репозитория git:
Это удаляет каталог или файл из всех коммитов.
Вы можете указать коммит, используя:
Или диапазон:
Чтобы перенести все на удаленное, вы можете сделать:
источник
git rm -r --cached NAME
этим уловка заключается в том, чтобы удалить его из локального репозитория git и предотвратить его влияние на всех, кто извлекает позже (удаляя историю файла или каталога из git.)Игнорируйте файлы, удалите файлы из git, обновите git (для удаления).
Примечание: это не касается истории для конфиденциальной информации.
Этот процесс определенно требует некоторого понимания того, что происходит с git. Со временем, получив это, я научился выполнять такие процессы, как:
1) Игнорировать файлы
.gitignore
чтобы игнорировать их - во многих случаях, например, ваш, родительский каталог, например,log/
будет регулярным выражением для использования..gitignore
изменение файла (не уверен, что push-уведомление нужно, не повредите, если это сделано).2) Удалите файлы из git (только).
git remove --cached some_dir/
3) Добавить и зафиксировать это изменение (по сути, это изменение «добавить» удаляемый материал, несмотря на всю непонятную команду «добавить»!)
git add .
git commit -m"removal"
источник