Подтвердить что ты не робот

Переименовать файл для всех коммитов в репозитории git

Я хочу переименовать файл для всех коммитов в репозитории git, вот что я попробовали:

git filter-branch --index-filter 'git mv -k <old name> <new name>' HEAD

Эта команда прошла через все коммиты в репозитории, но в итоге сообщение

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

что означает, что ничего не изменилось. Что здесь было не так?

Обратите внимание, что файл, который я хотел переименовать, не существует из первого коммита, поэтому, если я не использую -k в git mv, я имею в виду, если я использую:

git filter-branch --index-filter 'git mv <old name> <new name>' HEAD`

Git будет выходить из строя при попытке первой фиксации сказать что-то вроде "плохо источник... ".

4b9b3361

Ответ 1

Наконец-то я решил свою оригинальную проблему, используя:

git filter-branch --tree-filter '
if [ -f <old name> ]; then
  mv <old name> <new name>
fi' --force HEAD

Ответ 2

Для всех, кто интересуется просто переименованием файла - git rebase -i будет работать нормально - включите фиксацию, которая создала файл в rebase, пометьте его edit и просто переименуйте файл, git применит следующий правильно записывает этот файл.