Вопрос по github, git – «Git filter-branch» успешно используется для изменения коммиттера / автора, но изменения не отражаются на github

6

Я недавно заменил автора, коммиттера и его электронные письма во всех моих локальных коммитах, используя следующую команду:

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?

Возможно, GitHub кеширует эту информацию? Приносит ли репо новую ветку или новую репо ту же проблему? Vladimir Panteleev
Что вы имеете в виду, когда говорите, что Gemfile.lock и Views "отказываются обновлять автора и автора"? Только коммиты имеют коммиттер и автор, а не деревья и капли. Кроме того, ветвь фильтра, которую вы запустили, не будет ничего делать с файлами с именем «oldname». Кроме того, это может помочь опубликовать URL github. Max Nanasy

Ваш Ответ

2   ответа
5

git по-прежнему сохраняет резервную копию истории репо в refs / original. Это так, что если вы что-то испортили с помощью filter-branch, вы можете вернуться, если это будет необходимо. Убедившись, что все прошло гладко, вы можете удалить резервную копию ссылки с помощью:

git update-ref -d refs/original/refs/heads/master

По какой-то причине github по-прежнему требуется дополнительная фиксация для отражения изменений. Я добавлю пробел или что-то в readme, зафиксирую и нажму ... после этого github отображает правильных авторов на странице проекта.

0

чтобы определить автора строки? Вероятно, он либо кэширован, либо вы просматриваете что-то конкретное для старого коммита SHA1.

Вы можете проверить, что это работает, выполнив новый клон репозитория и проверивgit blame filename для этих двух файлов. Если это показывает правильного автора, то это сработало.

Похожие вопросы