Как удалить каталог из репозитория git? - PullRequest
1073 голосов
/ 11 июня 2011

В моем репозитории GitHub есть 2 директории. Я хотел бы удалить один из них. Как я могу сделать это без удаления и повторного создания всего хранилища?

Ответы [ 14 ]

1 голос
/ 22 октября 2017

Чтобы добавить новый каталог:

mkdir <YOUR-DIRECTORY>

Но теперь Git не знает об этом новом каталоге, потому что Git отслеживает файлы, а не каталоги. КАТАЛОГ

git status

Git не будет знать о внесенном нами изменении, поэтому мы добавим скрытый файл .keep, чтобы Git узнал об этом новом изменении.

touch /YOUR-directory/.keep

Теперь, если вы нажмете git status Git будет знать об изменениях.

И если вы хотите удалить каталог, вы должны использовать эту команду.

rm -r <YOUR-DIRECTORY>

И если вы проверили, используя git status, вы увидите, что каталог был удален.

1 голос
/ 07 июля 2017

Первая команда git должна знать, кто вы, прежде чем что-либо удалять

  1. git init
  2. git config user.name "somebody"
  3. git config user.электронная почта "somebody@someplace.com"
  4. git rm -r
  5. git commit -m "удаление каталога"
  6. мастер-источник происхождения git
1 голос
/ 16 ноября 2016

Один из моих коллег предложил BFG Repo-Cleaner , который я считаю мощным. Это не только удаляет ненужные данные, но и очищает ваш репозиторий от любой связанной информации о коммите.

0 голосов
/ 15 мая 2019

Я уже зафиксировал папку ранее и хочу удалить каталог и в истории.

Я сделал следующее:

Добавить папку в .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, но не удалена с локального диска.

...