Вопрос по github, git – «Git filter-branch» успешно используется для изменения коммиттера / автора, но изменения не отражаются на github
Я недавно заменил автора, коммиттера и его электронные письма во всех моих локальных коммитах, используя следующую команду:
git filter-branch -f --env-filter '
if [ "$GIT_COMMITTER_NAME" = "oldname" ];
then
GIT_COMMITTER_NAME="newname";
GIT_COMMITTER_EMAIL="newaddr";
GIT_AUTHOR_NAME="newname";
GIT_AUTHOR_EMAIL="newaddr";
fi
if [ "$GIT_AUTHOR_NAME" = "oldname" ];
then
GIT_COMMITTER_NAME="newname";
GIT_COMMITTER_EMAIL="newaddr";
GIT_AUTHOR_NAME="newname";
GIT_AUTHOR_EMAIL="newaddr";
fi
' -- --all
Обновления сразу становятся очевидными локально (например, в моей среде SourceTree). Однако после принудительной отправки измененного репозитория в GitHub…
git push -f origin master
... два отдельных пунктов упорно отказываются от их коммиттер и автор обновление: файл Gemfile.lock и каталог Просмотров
Пожалуйста, обратите внимание, что:
Это второй раз, когда я выполняю такую операцию над этим хранилищем. Я считаю, что не сталкивался с такими проблемами в первый раз.
В поисках моего старого имени в хранилище…
$ find . "<oldname">
… Делает дает множество результатов, что означает, что старое имя все еще скрывается во многих файлах репозитория, включая файлы, которые обновляются как на GitHub, так и локально.
Тогда мой вопрос: как я могу изменить коммиттера / автора двух "упрямых" файлов на GitHub?
git по-прежнему сохраняет резервную копию истории репо в refs / original. Это так, что если вы что-то испортили с помощью filter-branch, вы можете вернуться, если это будет необходимо. Убедившись, что все прошло гладко, вы можете удалить резервную копию ссылки с помощью:
git update-ref -d refs/original/refs/heads/master
По какой-то причине github по-прежнему требуется дополнительная фиксация для отражения изменений. Я добавлю пробел или что-то в readme, зафиксирую и нажму ... после этого github отображает правильных авторов на странице проекта.
чтобы определить автора строки? Вероятно, он либо кэширован, либо вы просматриваете что-то конкретное для старого коммита SHA1.
Вы можете проверить, что это работает, выполнив новый клон репозитория и проверивgit blame filename
для этих двух файлов. Если это показывает правильного автора, то это сработало.