Ostatnio robiąc porządki w jednym repozytorium użyłem złego klucza ssh. To spowodowało, że commit-y w repozytorium oznaczone były nie tym użytkownikiem, którym chciałem. Jak to w gicie bywa, (prawien) nie ma rzeczy, których by się nie dało naprawić.
Zatem jak przepisać całą historię (od pierwszego commita) i zmienić autora? Dodatkowo, jak przepisać historię i nie popsuć dat commitów?
Krok pierwszy, ustawić prawidłowo git-a a w szczególności:
user.name
user.email
A później przepisać historię:
git -c rebase.instructionFormat='%s%nexec GIT_COMMITTER_DATE="%cD" GIT_AUTHOR_DATE="%aD" git commit --amend --no-edit --reset-author' rebase --root
Powyższa komenda robi rebase od początku historii (parametr –root) i aktualizuje autora, ale nie psuje oryginalnej daty commit-a. To ważne, jeśli zachować historię.
Na koniec pozostaje wypchnąć zmiany czyli git push –force i temat z głowy.