반응형
커밋 시 이메일을 제대로 설정하지 않고 깃 저장소에 커밋했던 경험이 있어서 커밋 기록을 변경하는 방법에 대해 간략히 소개한다. 조직, 팀이 사용하는 저장소에서는 팀원간의 동의 없이 진행하지 않을 것을 권장합니다.
git filter-branch --env-filter '
OLD\_EMAIL="old-email@example.com"
CORRECT\_NAME="Your Correct Name"
CORRECT\_EMAIL="new-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
위 명령어에서 OLD_EMAIL에는 잘못 입력된 이메일을 기입하고 CORRECT_NAME 및 CORRECT_EMAIL에는 본인의 이메일을 기입한 뒤 적용하면 된다.
명령어를 입력하면 실행 되는데 실행 중간에 Ctrl + c 를 눌러 중단할 수 있다.
이후 실행이 완료 되면
git push --force --tags origin 'refs/heads/*'
위 명령어를 입력한다.
강제로 적용하는 거기 때문에 위에서 말했다시피 팀, 조직의 저장소에서는 팀원간의 동의가 필요하다.