Skip to content

Latest commit

 

History

History
49 lines (35 loc) · 1.82 KB

Git-여러-commit의-author를-바꾸는-방법.md

File metadata and controls

49 lines (35 loc) · 1.82 KB

Git 여러 commit의 author를 바꾸는 방법

하나의 컴퓨터에서 여러 git 계정을 쓰다보면 잘못된 author 정보를 써서 수많은 커밋을 날려놓고는 나중에 아차.. 싶은 때가 종종 있다.
이렇게 뒤늦게 알게되는 건 주로 개인 프로젝트에서 발생한다.
몇 개 안 된다면 git rebase -i로 한땀한땀 고칠 수도 있지만, 아주 많다면?

꽤 위험하지만 한 방에 처리할 수 있는 방법이 있다.

기존 커밋의 hash가 모두 바뀌므로 개인 프로젝트가 아닌 협업하는 프로젝트에서는 협의 없이 절대로 해서는 안 되는 방법이다.

git filter-branch를 이용하는 방법인데, GitHub에 아주 깔끔하게 예제가 정리돼있다.

다음 스크립트를 보면 금방 알 수 있을 것이다.

#!/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-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

다만 GitHub 예제에서는 더 안전을 기하기 위해 bare repository를 하나 만들어서 수행하도록 가이드하고 있다.

위 파일 실행 후 다음과 같은 에러가 나면,

Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

다음과 같이

git filter-branch --env-filter 'git filter-branch -f --env-filter ' 로 바꿔서 실행하면 된다.