У меня есть 2 каталога в моем хранилище GitHub. Я хотел бы удалить один из них. Как я могу сделать это без удаления и повторного создания всего хранилища?
У меня была точно такая же ситуация. Когда я пытался git rm -r myFolderэто работает, но также удалил все из каталога «MyFolder». Пришлось вернуть все в папку «MyFolder», а затем зафиксировать.
Джастин
240
@Justin Чтобы удалить только из git и оставить файловую систему как есть, используйтеgit rm -r --cached myFolder
karmakaze
32
Я получаю сообщение об ошибке: fatal: pathspec 'directory' не соответствует ни одному файлу.
user2441441
3
@ user2441441 У меня была эта ошибка, когда я пытался удалить папку / файл, который вообще не был добавлен в
репозиторий
3
git rm -r --cached directory/только удаляет из git отслеживается, но структура хранилища остается.
Нестор
287
Чтобы удалить папку / каталог только из репозитория git, а не из локального, попробуйте 3 простые команды.
Действия по игнорированию этой папки в следующих коммитах
Чтобы игнорировать эту папку из следующих коммитов, создайте в корневом каталоге один файл с именем .gitignore
и поместите в него имя этой папки. Вы можете положить столько, сколько хотите
Вам также нужно будет выполнить команду git rm -r --cached FolderName git commit -m «Удаленная папка из хранилища» на другом компьютере, а затем выполнить синхронизацию.
Саймон
1
Будет ли это удалять каталог с того места, где он был добавлен в хранилище до сих пор? Или это просто удалить каталог и отправить его в репозиторий .git?
alpha_989
1
Большой! За работой!
BeingCoders
2
Хорошо объяснил, хороший ответ
Ракшит Шах
1
отлично сработано. На моей машине третий шаг не работает. Но это работает, если его изменить на $ git push
Hong
82
Если по какой-то причине сказанное karmakaze не работает, вы можете попробовать удалить каталог, который вы хотите использовать, или с помощью браузера файловой системы (например, в Windows File Explorer). После удаления каталога введите команду: git add -A
и затем, git commit -m 'deleting directory'
и затем git push origin master.
Если вы удалите файлы в каталоге ( git rmкак объясняют другие ответы), то каталог больше не существует, если речь идет о git. Вы не можете зафиксировать пустой каталог или удалить его.
Это не похоже на Subversion, где вы должны явно svn rm emptyfolder/, и, кстати, почему manстраница для git описывает себя как «глупый трекер контента»
В настоящее время дизайн индекса git (промежуточной области) позволяет только перечислять файлы, и никто, достаточно компетентный, чтобы внести изменения, чтобы пустые каталоги могли позаботиться об этой ситуации, достаточно, чтобы исправить это.
Каталоги добавляются автоматически при добавлении файлов внутри них. То есть каталоги никогда не нужно добавлять в репозиторий, и они не отслеживаются сами по себе.
Вы можете сказать " git add <dir>", и он добавит туда файлы.
Если вам действительно нужен каталог для оформления покупок, вы должны создать в нем файл. .gitignore хорошо работает для этой цели; Вы можете оставить его пустым или указать имена файлов, которые вы ожидаете увидеть в каталоге.
я хотел удалить пустой каталог (папку), который я создал, git не может удалить его, после некоторого исследования я узнал, что Git не отслеживает пустые каталоги. Если у вас есть пустой каталог в вашем рабочем дереве, вы должны просто удалить его с помощью
Вы можете использовать Attlasian Source Tree (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Просто выберите файлы из дерева и нажмите кнопку «Удалить» вверху. Файлы будут удалены из локального репозитория и локальной базы данных git. Затем совершите, затем нажмите.
Это то, что я тоже делаю. Это сделало его действительно простым, однако, изучение git-команд полезно знать.
Мика Монтойя
1
Один из моих коллег предложил BFG Repo-Cleaner, который я считаю мощным. Он не только удаляет ненужные данные, но также очищает ваш репозиторий от любой связанной информации о коммите.
Ответы:
Удалить каталог из git и local
Вы можете оформить «мастер» с обоими каталогами;
Удалить каталог из git, но НЕ локально
Как уже упоминалось в комментариях, обычно вы хотите удалить этот каталог из git, но не удалять его полностью из файловой системы (локальной).
В этом случае используйте:
источник
git rm -r myFolder
это работает, но также удалил все из каталога «MyFolder». Пришлось вернуть все в папку «MyFolder», а затем зафиксировать.git rm -r --cached myFolder
git rm -r --cached directory/
только удаляет из git отслеживается, но структура хранилища остается.Чтобы удалить папку / каталог только из репозитория git, а не из локального, попробуйте 3 простые команды.
Шаги по удалению каталога
Действия по игнорированию этой папки в следующих коммитах
Файл .gitignore будет выглядеть так
источник
Если по какой-то причине сказанное karmakaze не работает, вы можете попробовать удалить каталог, который вы хотите использовать, или с помощью браузера файловой системы (например, в Windows File Explorer). После удаления каталога введите команду:
git add -A
и затем,
git commit -m 'deleting directory'
и затем
git push origin master
.источник
Вы можете попробовать это:
git rm -rf <directory_name>
Это заставит удалить каталог.
источник
Если вы удалите файлы в каталоге (
git rm
как объясняют другие ответы), то каталог больше не существует, если речь идет о git. Вы не можете зафиксировать пустой каталог или удалить его.Это не похоже на Subversion, где вы должны явно
svn rm emptyfolder/
, и, кстати, почемуman
страница для git описывает себя как «глупый трекер контента»Ответ на вопрос «Как добавить пустой каталог в репозиторий git» содержит ссылки на часто задаваемые вопросы по этой теме :
источник
Я уже зафиксировал папку и хочу удалить каталог в истории.
Я сделал следующее:
Добавить папку в
.gitignore
:Удалить из всех коммитов:
удалить ссылки из старых коммитов:
Убедитесь, что все старые ссылки полностью удалены
Выполнить сборку мусора
отправить вам изменения в онлайн-хранилище:
Вы сделали здесь.
Но вы можете сделать следующее, чтобы перенести все изменения во все ветви: Но будьте осторожны с этой командой!
После этого папка была удалена из git, но не была удалена с локального диска.
источник
для удаления пустых папок
я хотел удалить пустой каталог (папку), который я создал, git не может удалить его, после некоторого исследования я узнал, что Git не отслеживает пустые каталоги. Если у вас есть пустой каталог в вашем рабочем дереве, вы должны просто удалить его с помощью
Нет необходимости привлекать Git.
источник
Перейдите в каталог git и введите следующую команду: rm -rf < Имя каталога >
После удаления каталога зафиксируйте изменения: git commit -m "Your Commit Message"
Затем просто отправьте изменения в удаленный каталог GIT: git push origin < Branch name >
источник
Вы можете удалить папку локально и затем нажать, как показано ниже:
источник
Я обычно использую
git add --all
для удаления файлов / папок из удаленных репозиториевmaster
может быть заменен на любую другую ветку хранилища.источник
Вы можете использовать Attlasian Source Tree (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Просто выберите файлы из дерева и нажмите кнопку «Удалить» вверху. Файлы будут удалены из локального репозитория и локальной базы данных git. Затем совершите, затем нажмите.
источник
Один из моих коллег предложил BFG Repo-Cleaner, который я считаю мощным. Он не только удаляет ненужные данные, но также очищает ваш репозиторий от любой связанной информации о коммите.
источник
Чтобы добавить новый каталог:
Но теперь Git не знает об этом новом каталоге, потому что Git отслеживает файлы, а не каталоги DIRECTORY
Git не будет знать о внесенном нами изменении, поэтому мы добавим скрытый
.keep
файл, чтобы Git узнал об этом новом изменении.Теперь, если вы нажмете
git status
Git, вы будете в курсе изменений.И если вы хотите удалить каталог, вы должны использовать эту команду.
И если вы проверили с помощью
git status
, вы увидите, что каталог был удален.источник
Первая команда git должна знать кто вы, прежде чем что-то удалять
источник
Комбинация из 2 ответов сработала для меня
если он все еще показывает какое-то предупреждение, удалите файлы вручную
источник