Zaangażowałem się w projekt na Githubie, ale zdałem sobie sprawę, że nie ustawiłem odpowiedniego adresu e-mail i imienia i nazwiska osoby odpowiedzialnej na komputerze, którego obecnie używam do tworzenia zatwierdzeń, a tym samym awatara użytkownika i adresu e-mail nie ma.
Jak mogę przepisać wszystkie poprzednie adresy e-mail i nazwy użytkowników?
Odpowiedzi:
Możesz dodać ten alias:
Aby zmienić nazwisko autora:
lub e-mail dotyczący tylko ostatnich 10 zatwierdzeń:
Alias:
Źródło: https://github.com/brauliobo/gitconfig/blob/master/configs/.gitconfig
źródło
git change-commits GIT_COMMITTER_EMAIL "[email protected]" "[email protected]"
do zmiany adresu e-mail osoby zatwierdzającej.change-commits = "!f() { VAR1=$1; VAR='$'$1; OLD=$2; NEW=$3; echo \"Are you sure for replace $VAR $OLD => $NEW ?(Y/N)\";read OK;if [ \"$OK\" = 'Y' ] ; then shift 3; git filter-branch --env-filter \"if [ \\\"${VAR}\\\" = '$OLD' ]; then export $VAR1='$NEW';echo 'to $NEW'; fi\" $@; fi;}; f "
Cannot create a new backup. A previous backup already exists in refs/original/
Rozwiązanie już tam jest: Zmień autora i autora oraz adres e-mail wielu zatwierdzeń w Git
Mianowicie,
źródło
Jeśli już umieściłeś część swoich zatwierdzeń w repozytorium publicznym, nie chcesz tego robić, bo inaczej stworzyłoby to alternatywną wersję historii mastera, z której mogliby korzystać inni. „Nie przekraczaj strumieni… Byłoby źle…”
To powiedziawszy, jeśli są to tylko zatwierdzenia, które wykonałeś w swoim lokalnym repozytorium, to wszelkimi sposobami napraw to przed wysłaniem na serwer. Możesz użyć
git filter-branch
polecenia z--commit-filter
opcją, więc edytuje tylko zatwierdzenia, które pasują do twoich nieprawidłowych informacji, na przykład:źródło
git update-ref -d refs/original/refs/heads/master
, patrz < stackoverflow.com/a/7654880/333403 >.A previous backup already exists in refs/original/
W takim przypadku uruchom go ponownie z nowym e-mailem i dodaj-f
przed --commit-filter. Używaj według własnego uznania. Zwykle-f
jest to niebezpieczne bez wiedzy o tym, co robi.Po zastosowaniu odpowiedzi Oliviera Verdiera:
... aby wypchnąć zmienioną historię do pierwotnego wykorzystania repozytorium:
Powyższe polecenie (uwaga na plus) wymusza przepisanie historii również w oryginalnym repozytorium. Używaj ostrożnie!
źródło
https://help.github.com/articles/changing-author-info/
to całkowicie zadziałało dla mnie. Po git push sprawdź aktualizację w portalu internetowym git. Jeśli zatwierdzenie nadal nie było połączone z moim kontem, wyświetlała się domyślna miniatura obok zatwierdzenia i nie została odzwierciedlona na wykresie osi czasu mojego wkładu, przejdź do adresu URL zatwierdzenia i dołącz .patch na końcu adresu URL i sprawdź nazwę i email są poprawne.
źródło
Dla tych, którzy chcą tylko łatwej wersji do kopiowania wklejania (oprócz aktualizacji e-maili i nazw):
źródło
Biorąc pod uwagę, że użycie programu nie
git-filter-branch
jest pożądane , zrobienie tego samego w git-filter-repo (może być konieczne zainstalowanie go najpierw zpip install git-filter-repo
):Jeśli repozytorium jest oryginalne, bez zdalnego, będziesz musiał dodać,
--force
aby wymusić przepisanie. (Przed wykonaniem tej czynności możesz utworzyć kopię zapasową repozytorium).Jeśli nie chcesz zachowywać referencji (będą one wyświetlane w historii gałęzi Git GUI), będziesz musiał dodać
--replace-refs delete-no-add
.Aby uzyskać bardziej zaawansowane funkcje, zobacz „Filtrowanie nazw i e-maili” .
PS Skradzione i ulepszone z https://stackoverflow.com/a/59591928/714907 .
źródło