У меня есть 2 каталога в моем репозитории GitHub. Я хотел бы удалить один из них. Как я могу сделать это без удаления и повторного создания всего хранилища?
Как удалить каталог из репозитория git?
Ответ 1
Удалить каталог из git и локального
Вы можете проверить "мастер" с обоими каталогами;
git rm -r one-of-the-directories
git commit -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)
Удалить каталог из git, но не локальный
Как уже упоминалось в комментариях, вы обычно хотите удалить этот каталог из git, но не полностью удалить его из файловой системы (локальной)
В этом случае используйте:
git rm -r --cached myFolder
Ответ 2
Чтобы удалить папку/каталог только из репозитория git, а не из локальной, попробуйте 3 простых команды.
Шаги по удалению каталога
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
Шаги, чтобы игнорировать эту папку в следующих коммандах
Чтобы игнорировать эту папку из следующих коммитов, создайте один файл в корневом каталоге с именем .gitignoreи вставьте это имя папок в него. Вы можете разместить столько, сколько хотите
.gitignore файл будет выглядеть следующим образом
/FolderName
Ответ 3
Если по какой-то причине сказанное karmakaze не работает, вы можете попробовать удалить каталог, который вы хотите использовать, или с помощью браузера файловой системы (например, в Windows File Explorer). После удаления каталога, введите команду: git add -A
а потом git commit -m 'deleting directory'
а потом git push origin master
.
Ответ 4
Вы можете попробовать следующее:
git rm -rf <directory_name>
Это приведет к удалению каталога.
Ответ 5
Если вы удалите файлы в каталоге (с git rm
, как объясняют другие ответы), каталог больше не существует до git. Вы не можете передать пустой каталог и не можете удалить его.
Это не похоже на subversion, где вы должны явно svn rm emptyfolder/
, и, кстати, почему страница man
для git описывает себя как "глупый трекер контента"
Ответ на Как добавить пустой каталог в репозиторий git к Вопросы и ответы по этому вопросу:
В настоящее время дизайн индекса git(промежуточная область) разрешает только файлы быть перечислены, и никто не достаточно компетентен чтобы сделать изменение пустым в каталогах достаточно эта ситуация для его исправления.
Каталоги добавляются автоматически при добавлении в них файлов. Что, каталоги никогда не должны быть добавлены к репозиторию и не отслеживаются самостоятельно.
Вы можете сказать "
git add <dir>
", и это добавит туда файлы.Если вам действительно нужен каталог для в выписках вы должны создать файл в нем. .gitignore хорошо работает для эта цель; вы можете оставить его пустым, или введите имена файлов, которые вы Ожидается, что они появятся в каталоге.
Ответ 6
Перейдите в каталог git, затем введите следующую команду: rm -rf < Справочное имя >
После удаления каталога зафиксируйте изменения: git commit -m "Ваше обязательное сообщение"
Затем просто нажмите изменения в удаленном каталоге git: git push origin < Название филиалa >
Ответ 7
Вы можете удалить папку локально, а затем нажать, как показано ниже:
git rm -r folder_name
git commit -m "your commit"
git push origin master
Ответ 8
Обычно я использую git add --all
для удаления файлов/папок из удаленных репозиториев
rm -r folder_name
git add --all
git commit -m "some comment"
git push origin master
master
может быть заменен любой другой ветвью репозитория.
Ответ 9
для удаления пустых папок
я хотел удалить пустой каталог (папку), который я создал, git не может удалить его, после некоторого исследования я узнал, что Git не отслеживает пустые каталоги. Если у вас есть пустой каталог в вашем рабочем дереве, вы должны просто удалить его с помощью
rm -r folderName
Нет необходимости привлекать Git.
Ответ 10
Вы можете использовать Attlasian Source Tree (Windows) (https://www.atlassian.com/software/sourcetree/overview). Просто выберите файлы из дерева и нажмите "Удалить" вверху. Файлы будут удалены из локального репозитория и локальной базы данных git. Затем Commit, затем нажмите.
Ответ 11
Один из моих коллег предложил BFG Repo-Cleaner, который я считаю могущественным. Это не только удаление нежелательных данных, но и очистка вашего репозитория от любой связанной с ним информации о фиксации.
Ответ 12
Сначала команда git должна знать, кто вы, прежде чем удалять что-либо
- git init
- git config user.name "кто-то"
- git config user.email "[email protected]"
- git rm -r
- git commit -m "удаление dir"
- git push origin master
Ответ 13
Чтобы добавить новый каталог:
mkdir <YOUR-DIRECTORY>
Но теперь Git не знает об этом новом каталоге, потому что Git отслеживает файлы, а не каталоги DIRECTORY
git status
Git не будет знать о внесенном нами изменении, поэтому мы добавим скрытый файл .keep
чтобы Git узнал об этом новом изменении.
touch /YOUR-directory/.keep
Теперь, если вы нажмете на git status
Git будет знать об изменениях.
И если вы хотите удалить каталог, вы должны использовать эту команду.
rm -r <YOUR-DIRECTORY>
И если вы проверили, используя git status
, вы увидите, что каталог был удален.
Ответ 14
В вашем локальном репо просто удалите каталог
rm -rf directory_name
теперь нажмите изменения:
git add .
git commit -m "Delete a repository"
git push
Ответ 15
Я уже зафиксировал папку и хочу удалить каталог в истории.
Я сделал следующее:
Добавить папку в .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, но не была удалена с локального диска.