Год, полный несвязанных коммитов.Можно сохранить? - PullRequest
0 голосов
/ 24 мая 2018

Как кажется, мой конфиг git как-то изменился, поэтому все коммиты были от моего реального имени, но не связаны с моей учетной записью github.Существует более 1500 коммитов, которые я «потерял», как в статистике проекта и на моей странице вклада.

Мне удалось связать свой аккаунт с правильным адресом электронной почты, но другие коммиты имеют адрес нашего локального домена, например: "user@server.local".

Можно ли связать все эти коммиты с моим реальным аккаунтом?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Github предоставляет процедуру для изменения информации об авторе (включая электронную почту) прошлых коммитов .В основном, вы вводите информацию в соответствующем месте в этом скрипте:

#!/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="user@server.local"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

и запускаете ее.Различные варианты описаны в справочной странице, поднятой git help filter-branch, если вам интересно;вкратце, --env-filter говорит git, что вы будете изменять переменные окружения, связанные с коммитом, --tag-name-filter cat говорит, что он не должен изменять содержимое тегов, а --branches и --tags говорят git применять изменения к коммитам.которые доступны из всех веток и тегов в вашем хранилище.После этого вы можете проверить историю и принудительно нажать на нее:

git push --force --tags origin 'refs/heads/*'

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

0 голосов
/ 24 мая 2018

Мне кажется, что если вы установите репозиторий на github, установите его в качестве нового удаленного для проекта, а затем отправите свой проект, вся история коммитов будет перенесена на удаленный.

...