sorry_i_noob
@sorry_i_noob

Как с помощью команды удалить папку из репозитория начиная с N-го коммита (я добавил папку, но не push'ил)?

Здравствуйте. Я в интернете нашел вот такую команду:
git filter-branch --force --index-filter "git rm -r --cached --ignore-unmatch BIG/DIR" --prune-empty --tag-name-filter cat -- --all

Вместо BIG/DIR название папки, которую надо удалить из локального репозитория (после чего ее можно добавить в gitignore).
Она хорошо работает, но как мне указать в ней - с какого коммита появилась эта папка? Эта команда просматривает ВСЕ коммиты, из-за чего потом происходят проблемы, если сделать push.
Я добавил в git папку, которой там быть не должно. Пока еще не делал push. Я хочу удалить ее.
  • Вопрос задан
  • 443 просмотра
Пригласить эксперта
Ответы на вопрос 1
Blacknife
@Blacknife
I born, raised...
Чтобы не выполнять непонятные вам команды просто запомните простую последовательность в таком случае:

1. случайно добавили что-то в git, закоммитили
2. чтобы удалить случайные файлы из репозитория вам нужно всего лишь удалить эти файлы (перенести временно куда-нибудь из репозитория) и сразу закоммитить изменения
3. добавить файл/папку в gitignore, закоммитить
4. вернуть файлу/папке старое местонахождение, больше он в коммит не попадет

Итого у вас для исправления должно получиться 2 коммита, первый удаляет файлы, второй добавляет их в гитигнор. Если на первом пункте вы уже запушили изменения в удаленный репозиторий, то после шага 3 снова пушите и все.

Возможно, вы случайно зафиксировали файл, содержащий пароль, а теперь хотите сделать ваш проект общедоступным, например для удаления файла passwords.txt из всей вашей истории вы можете использовать опцию --tree-filter команды filter-branch::

git filter-branch --tree-filter 'rm -f passwords.txt' HEAD


https://git-scm.com/book/ru/v2/%D0%98%D0%BD%D1%81%...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы