본문 바로가기

Git

[Git] 이미 Commit된 Author 변경하기

1. 명령어

OLD_NAME, OLD_EMAIL, CORRECT_NAME, CORRECT_EMAIL을 알맞게 지정한다. (old_name, old_email 중 하나만 쓰고 싶다면 if문쪽을 변경하면된다.)

git filter-branch --env-filter '
OLD_NAME="old-name"
OLD_EMAIL=" old-email@example.com "
CORRECT_NAME="correct-name"
CORRECT_EMAIL=" correct -email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] || [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] || [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

 

2. 변경 사항 강제 푸시

git push origin --force --all
git push origin --force --tags

 

git filter-branch를 사용하면 저장소의 크기가 클 경우 시간이 많이 걸릴 수 있고, git filter-repo와 같은 더 최신 도구를 사용하는 것이 더 효과적일 수 있다.