본문으로 바로가기

[Git] git filter-branch

category 관심 분야Git 12개월 전
반응형

커밋 시 이메일을 제대로 설정하지 않고 깃 저장소에 커밋했던 경험이 있어서 커밋 기록을 변경하는 방법에 대해 간략히 소개한다. 조직, 팀이 사용하는 저장소에서는 팀원간의 동의 없이 진행하지 않을 것을 권장합니다.

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/*'

위 명령어를 입력한다.

강제로 적용하는 거기 때문에 위에서 말했다시피 팀, 조직의 저장소에서는 팀원간의 동의가 필요하다.