У меня есть 2 каталога в моем хранилище GitHub. Я хотел бы удалить один из них. Как я могу сделать это без удаления и повторного создания всего хранилища?
У меня есть 2 каталога в моем хранилище GitHub. Я хотел бы удалить один из них. Как я могу сделать это без удаления и повторного создания всего хранилища?
Ответы:
Вы можете оформить «мастер» с обоими каталогами;
git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)
Как уже упоминалось в комментариях, обычно вы хотите удалить этот каталог из git, но не удалять его полностью из файловой системы (локальной).
В этом случае используйте:
git rm -r --cached myFolder
git rm -r myFolder
это работает, но также удалил все из каталога «MyFolder». Пришлось вернуть все в папку «MyFolder», а затем зафиксировать.
git rm -r --cached myFolder
git rm -r --cached directory/
только удаляет из git отслеживается, но структура хранилища остается.
Шаги по удалению каталога
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
Действия по игнорированию этой папки в следующих коммитах
Чтобы игнорировать эту папку из следующих коммитов, создайте в корневом каталоге один файл с именем .gitignore и поместите в него имя этой папки. Вы можете положить столько, сколько хотите
Файл .gitignore будет выглядеть так
/FolderName
Если по какой-то причине сказанное 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» содержит ссылки на часто задаваемые вопросы по этой теме :
В настоящее время дизайн индекса git (промежуточной области) позволяет только перечислять файлы, и никто, достаточно компетентный, чтобы внести изменения, чтобы пустые каталоги могли позаботиться об этой ситуации, достаточно, чтобы исправить это.
Каталоги добавляются автоматически при добавлении файлов внутри них. То есть каталоги никогда не нужно добавлять в репозиторий, и они не отслеживаются сами по себе.
Вы можете сказать "
git add <dir>
", и он добавит туда файлы.Если вам действительно нужен каталог для оформления покупок, вы должны создать в нем файл. .gitignore хорошо работает для этой цели; Вы можете оставить его пустым или указать имена файлов, которые вы ожидаете увидеть в каталоге.
Я уже зафиксировал папку и хочу удалить каталог в истории.
Я сделал следующее:
Добавить папку в .gitignore
:
echo Folder_Name/ >> .gitignore
Удалить из всех коммитов:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all
удалить ссылки из старых коммитов:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
Убедитесь, что все старые ссылки полностью удалены
rm -Rf .git/logs .git/refs/original
Выполнить сборку мусора
git gc --prune=all --aggressive
отправить вам изменения в онлайн-хранилище:
git push
Вы сделали здесь.
Но вы можете сделать следующее, чтобы перенести все изменения во все ветви: Но будьте осторожны с этой командой!
git push origin --all --force
git push origin --tags --force
После этого папка была удалена из git, но не была удалена с локального диска.
для удаления пустых папок
я хотел удалить пустой каталог (папку), который я создал, git не может удалить его, после некоторого исследования я узнал, что Git не отслеживает пустые каталоги. Если у вас есть пустой каталог в вашем рабочем дереве, вы должны просто удалить его с помощью
rm -r folderName
Нет необходимости привлекать Git.
Вы можете использовать Attlasian Source Tree (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Просто выберите файлы из дерева и нажмите кнопку «Удалить» вверху. Файлы будут удалены из локального репозитория и локальной базы данных git. Затем совершите, затем нажмите.
Один из моих коллег предложил BFG Repo-Cleaner, который я считаю мощным. Он не только удаляет ненужные данные, но также очищает ваш репозиторий от любой связанной информации о коммите.
Чтобы добавить новый каталог:
mkdir <YOUR-DIRECTORY>
Но теперь Git не знает об этом новом каталоге, потому что Git отслеживает файлы, а не каталоги DIRECTORY
git status
Git не будет знать о внесенном нами изменении, поэтому мы добавим скрытый .keep
файл, чтобы Git узнал об этом новом изменении.
touch /YOUR-directory/.keep
Теперь, если вы нажмете git status
Git, вы будете в курсе изменений.
И если вы хотите удалить каталог, вы должны использовать эту команду.
rm -r <YOUR-DIRECTORY>
И если вы проверили с помощью git status
, вы увидите, что каталог был удален.
Комбинация из 2 ответов сработала для меня
git rm -r one-of-the-directories
git commit . -m "Remove duplicated directory"
git push
если он все еще показывает какое-то предупреждение, удалите файлы вручную
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push