Я добавил файл с именем "file1.txt"
в репозиторий Git. После этого я зафиксировал его, добавил пару каталогов с именем dir1
and dir2
и отправил их в репозиторий Git.
Теперь текущее хранилище имеет "file1.txt"
, dir1
и dir2
. Как я могу удалить, "file1.txt"
не влияя на других, как dir1
и dir2
?
git rm
это правильный ответ, но помните, что файл все еще будет там в истории. Если вы хотите удалить файл, потому что он содержал конфиденциальную информацию, вам нужно сделать что-то более радикальное. (Изменение истории, особенно для контента, который вы уже добавили, является радикальным действием, и его следует избегать, если это возможно.)Ответы:
Использование
git rm
.Если вы хотите удалить файл из репозитория Git и файловой системы , используйте:
Но если вы хотите удалить файл только из репозитория Git и не удалять его из файловой системы, используйте:
И подтолкнуть изменения к удаленному репо
источник
git rm file.txt
удаляет файл из репозитория, но также удаляет его из локальной файловой системы .Чтобы удалить файл из репозитория и не удалять его из локальной файловой системы, используйте:
git rm --cached file.txt
Ниже приведена точная ситуация, когда я использую git для поддержки контроля версий для веб-сайта моего бизнеса, но каталог «mickey» был папкой tmp для обмена частным контентом с разработчиком САПР. Когда он нуждался в ОГРОМНЫХ файлах, я создал личный, несвязанный каталог и установил там ftpd файлы для его загрузки через браузер. Забыв, что я сделал это, я позже выполнил
git add -A
из базовой директории сайта. Впоследствииgit status
показали новые файлы, требующие фиксации. Теперь мне нужно было удалить их из отслеживания git и контроля версий ...Ниже приведен пример того, что случилось со мной, когда я случайно удалил
.003
файл. К счастью, мне все равно, что случилось с локальной копией.003
, но некоторые другие в настоящее время измененные файлы были обновлениями, которые я только что сделал на веб-сайте, и они были бы грандиозными, если их удалить в локальной файловой системе! «Локальная файловая система» = живой сайт (не очень хорошая практика, но реальность) .Обновление: Этот ответ получает некоторый трафик, поэтому я подумал, что упомяну другой мой ответ Git, делится парой отличных ресурсов: На этой странице есть рисунок, который помогает демистифицировать Git для меня. Книга "Pro Git" онлайн и мне очень помогает.
источник
git commit -m "Just removing file1.txt"
а затем, если у вас есть удаленный репозиторий, протолкнуть коммит с чем-то вродеgit push origin master
.Во-первых, если вы используете
git rm
, особенно для нескольких файлов, учтите, что любой подстановочный знак будет разрешен оболочкой, а неgit
командой.Но, если ваш файл уже находится на GitHub, вы можете (с июля 2013 года) напрямую удалить его из веб-интерфейса!
Затем "
git pull
" в вашем локальном репо, и это также приведет к удалению файла локально.Что делает этот ответ (окольным) способом удаления файла из git repo?
(Не говоря уже о том, что файл на GitHub находится в «git repo»)
(фиксация будет отражать удаление этого файла):
Последнее предложение означает, что удаленный файл все еще является частью истории, и вы можете восстановить его достаточно легко (но пока не через веб-интерфейс GitHub):
Смотрите « Восстановление удаленного файла в Git-репо ».
источник
Это единственный вариант, который работал для меня.
Примечание. Замените * .sql именем файла или типом файла. Будьте очень осторожны, потому что это пройдет каждый коммит и вырвет этот тип файла.
РЕДАКТИРОВАТЬ: обратите внимание - после этой команды вы не сможете нажимать или тянуть - вы увидите отклонение «несвязанной истории», которую вы можете использовать «git push --force -u origin master», чтобы толкать или тянуть
источник
git push --force -u origin master
Кроме того, если это папка, которую нужно удалить, и последующие дочерние папки или файлы, используйте:
источник
Use git rm --cached -r <foldername>
В более общем случае,
git help
поможет, по крайней мере, простые вопросы, подобные этому:источник
git help
запутанным, но это хорошо для простых вещей :)rm
ставит файл для удаления, а не для удаления из индекса (хотя для нубов это по-прежнему бессмысленно).Если вы хотите удалить файл из репозитория, но оставить его в файловой системе (не будет отслеживаться):
Если вы хотите удалить файл из репозитория и из файловой системы, есть два варианта:
Если в файле нет изменений, внесенных в указатель:
Если файл имеет изменения, поставленные в индексе:
источник
git rm
теперь будет удалять только файл в этой ветке, но он останется в истории, и git запомнит его.Правильный способ сделать это с
git filter-branch
, как другие уже упоминали здесь. Он будет переписывать каждый коммит в истории ветки, чтобы удалить этот файл.Но даже после этого git может запомнить это, потому что на него могут быть ссылки в reflog, remotes, tags и т. Д.
Если вы хотите полностью стереть это за один шаг, я рекомендую вам использовать
git forget-blob
https://ownyourbits.com/2017/01/18/completely-remove-a-file-from-a-git-repository-with-git-forget-blob/
Это просто, просто сделай
git forget-blob file1.txt
.Это удалит все ссылки, сделает
git filter-branch
и, наконец, запустит сборщик мусора git,git gc
чтобы полностью избавиться от этого файла в вашем репо.источник
Другой способ, если вы хотите удалить файл из локальной папки с помощью команды rm, а затем отправить изменения на удаленный сервер.
источник
Примечание: если вы хотите удалить файл только из git, используйте ниже:
Если вы хотите удалить также с жесткого диска:
Если вы хотите удалить папку (папка может содержать несколько файлов), вы должны удалить ее с помощью рекурсивной команды, как показано ниже:
Если вы хотите удалить папку внутри другой папки
Тогда можно
commit
иpush
как обычно. Однако, если вы хотите восстановить удаленную папку, вы можете выполнить следующее: восстановление удаленных файлов из git возможно.Читайте больше на официальном документе.
источник
Чтобы удалить определенный файл
Очистить все неотслеживаемые файлы из каталога за один раз
источник
Если у вас есть приложение GitHub для Windows, вы можете удалить файл за 5 простых шагов:
источник
В моем случае я попытался удалить файл на github после нескольких коммитов, но сохранить на компьютере
а позже этот файл был проигнорирован
источник
Сначала удалите файлы из локального хранилища.
или удалить файлы только из локального репозитория, но из файловой системы
Во-вторых, зафиксировать изменения в локальном хранилище.
Наконец, обновите / вставьте локальные изменения в удаленный репозиторий.
источник
Я перепробовал много предложенных вариантов, но ни один из них не работал (я не буду перечислять различные проблемы). То, что я в итоге делал, это работало, было просто и интуитивно понятно (для меня):
источник
После того, как вы удалили файл из репо,
git rm
вы можете использовать BFG Repo-Cleaner, чтобы полностью и легко стереть файл из истории репо.источник
У меня есть файлы obj и bin, которые случайно попали в репозиторий, который я не хочу загрязнять в списке «измененных файлов»
После того, как я заметил, что они пошли к пульту, я проигнорировал их, добавив это в
.gitignore
Проблема в том, что они уже находятся в удаленном режиме, и когда они меняются, они всплывают как измененные и загрязняют измененный список файлов.
Чтобы перестать их видеть, вам нужно удалить всю папку из удаленного репозитория.
В командной строке:
C:\repos\MyRepo
)C:\repos\MyRepo\SSIS
)git rm -r -f obj
git commit -m "remove obj folder"
Я получил тревожное сообщение о том, что 13 файлов изменено 315222 удалений
Тогда, потому что я не хотел искать строку CMD, я вошел в Visual Sstudio и сделал синхронизацию, чтобы применить ее к удаленному
источник
Если вам нужно удалить файлы с определенным расширением (например, скомпилированные файлы), вы можете сделать следующее, чтобы удалить их все сразу:
источник
Согласно документации .
git rm --cached giant_file
Когда дело доходит до конфиденциальных данных - лучше не говорить, что вы удалили файл, а просто включить его в последний известный коммит:
0. Изменить последний коммит
Если вы хотите удалить файл из всей истории git, согласно документации вы должны сделать следующее:
1. Удалить его из вашей местной истории
3. Если вам нужно удалить с пульта
4. Если вам также необходимо удалить его из выпусков тегов:
источник
Если вы не используете файл в своем локальном репо, а в git-репо, просто откройте файл в git-репо через веб-интерфейс и найдите кнопку «Удалить» в правом углу интерфейса. Нажмите здесь, чтобы просмотреть интерфейс Удалить вариант
источник