Как навсегда удалить файл в Git, не получая ПРЕДУПРЕЖДЕНИЕ: ссылка «refs/heads/master» не изменилась?

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

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

Все в результате:

ВНИМАНИЕ: ссылка 'refs/heads/master' не изменилась.

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


person Tower    schedule 11.02.2012    source источник
comment
Изменилось ли что-нибудь после ветки фильтра?   -  person Andy    schedule 11.02.2012
comment
Нет, файловая система та же, и я вижу файлы в истории.   -  person Tower    schedule 11.02.2012
comment
Есть ли разница между index-filter и tree-filter версиями команды, кроме скорости, с точки зрения итоговой истории репо? И что делают --, --all и --prune-empty?   -  person alpha_989    schedule 21.01.2018


Ответы (2)


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

Launcher\lib

к этому:

Launcher/lib/

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

person Tower    schedule 11.02.2012
comment
Точно так же, если вы переместили файл с помощью git mv, старые коммиты по-прежнему ссылаются на старое местоположение, поэтому вам следует rm это, а не новое местоположение (или запустить его с обоими). - person Achal Dave; 31.05.2013

Я помещу это здесь как ссылку на будущее, так как у меня была та же проблема: если вы используете 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

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

person Yar    schedule 16.11.2015