이거 잘못하면 나락으로 빠집니다. 잘 확인하고 사용하세요.
회사 계정하고 개인 계정... 게다가 가끔 포트폴리오 계정까지 사용하다 보니
나중에 커밋 메시지가 이래저래 꼬이고 난리도 아닙니다.
로컬에서 이제 향후 올라가는 메시지는 정리했는데, 이미 푸시까지 되고 난 메시지를 정리할려니 막막해졌습니다.
git rebase -i 로 해서 정리했더니 대부분의 옵션이 author를 변경하는 것이라서, 제 커밋 히스토리에는 committer 와 author 가 같이 표시되는 문제로 정리하고 나서 더 엉망이 되는 문제가 발생했습니다.
그래서 이번에 filter-branch로 변경했습니다.
git filter-branch --env-filter '
WRONG_EMAIL="$WRONG_EMAIL"
NEW_NAME="$NEW_NAME"
NEW_EMAIL="$NEW_EMAIL"
if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ] // committer에 잘못된 이메일이 들어간 경우
then
export GIT_COMMITTER_NAME="$NEW_NAME"
export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ] // author 에 잘못된 이메일이 들어간 경우
then
export GIT_AUTHOR_NAME="$NEW_NAME"
export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
;
처음 제가 받은 찾은 소스는 위와 같았습니다.
그게 저는 모든 페이지가 잘못되었으므로,
git filter-branch --force --env-filter '
export GIT_COMMITTER_NAME="$NEW_NAME"
export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
export GIT_AUTHOR_NAME="$NEW_NAME"
export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
' --tag-name-filter cat -- --branches --tags
위와 같이 적었습니다. 그리고 저 처럼 여러번 돌리는 사람은 --force 옵션을 통해 기존 백업을 지우는 방식으로 하시기 바랍니다.
다만 위에 적었듯이 백업을 지우는건 이전으로 돌리기 불가능하게 만드는 것이므로 신중신중하게 사용하시기 바랍니다.