git 커밋 작성자(author) 한꺼번에 수정하기

ounols·2021년 7월 21일
2

외부에서 다른 저장소로 옮긴 깃이거나 로컬 깃에서 작성자를 잘못 설정하여
깃허브에 알 수 없는 사용자로 되어버리는 일이 생각보다 많습니다.

그럴 때 구글이 알려준 Rebase를 사용한 방식은 특정 커밋의 일부 정보를 바꿔줍니다.


그런데 위 사진처럼 특정 하나하나가 아닌 관련 작성자 전체라면....?
안그래도 커밋에 나를 인식하지 못하는게 많이 존재하니 괜히 거슬립니다!🤔

그래서 해당 게시글은 커밋 작성자를 한꺼번에 수정하는 방법을 알아보도록 합시다!

1. filter-branch로 명령 작성하기

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

먼저 다음과 같이 filter-branch를 이용한 명령어를 작성합니다.
커밋터와 작성자 둘 다 수정하는 코드이기 때문에
특정한 상황에서는 입맛에 따라 일부 if문을 제거하면 될 것 같습니다.

그럼 다음과 같이 모든 커밋을 쭉 탐색하며 돕니다.
커밋이 많을수록 좀 걸리더군요ㅎㅎ

2. 수정된 커밋 내역을 push하기

git push --force --tags origin 'refs/heads/*'

다음과 같이 모든 브랜치를 강제푸시를 진행하면 모든 브랜치에 적용됩니다.

만약 특정 브랜치에만 적용하고 싶으면 아래와 같이 푸시하시면 됩니다.

git push --force --tags origin 'refs/heads/develop'

3. 적용 완료!

적용이 완료되었습니다! 신난다!

참고 : https://stackoverflow.com/questions/3042437/how-to-change-the-commit-author-for-one-specific-commit

profile
(게임 엔진 프로그래머가 되고싶은) 게임 클라이언트 프로그래머

0개의 댓글