Переименовать файл для всех коммитов в git-репозитории - PullRequest
21 голосов
/ 25 февраля 2012

Я хочу переименовать файл для всех коммитов в 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 выдает ошибку при попытке первого коммита, говоря что-то вроде «плохой источник ...».

Ответы [ 2 ]

20 голосов
/ 27 февраля 2012

Я наконец решил свою первоначальную проблему, используя:

git filter-branch --tree-filter '
if [ -f <old name> ]; then
  mv <old name> <new name>
fi' --force HEAD
1 голос
/ 16 мая 2017

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...