Как удалить файл без возможности восстановления в Git, не получая «ПРЕДУПРЕЖДЕНИЕ: ссылка 'refs /head / master' не изменилась"? - PullRequest
24 голосов
/ 11 февраля 2012

Я гуглял и читал различные посты в сети, и я попробовал:

git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch Launcher\lib" --prune-empty -- --all

и

git filter-branch --tree-filter "rm -rf Launcher\lib" --prune-empty -- --all

Все, что привело к:

ПРЕДУПРЕЖДЕНИЕ: Ref 'refs / heads / master' не изменяется

Существуют и другие клоны этого хранилища, а также центральный сервер. Я перенесу изменения на сервер, как я понимаю, другим с клонами просто нужно выбрать и перебазировать (а не объединить)? Будет ли это работать, если они внесут изменения?

Ответы [ 2 ]

26 голосов
/ 11 февраля 2012

Хорошо, я решил проблему, это был неправильный путь. Я изменил это:

Launcher\lib

к этому:

Launcher/lib/

и теперь это работает;)

7 голосов
/ 16 ноября 2015

Я собираюсь поместить это здесь в качестве справочной информации в будущем, так как у меня была такая же проблема: Если вы используете cmder (или другие ConEmu разновидности), используйте двойные кавычки вместо одинарных.

Также заключите путь в кавычки, если в вашем адресе есть пробелы:

git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch 'server/bin/some file.txt'" \
--prune-empty --tag-name-filter cat -- --all

Это была проблема, когда я получил эту ошибку.

...