외부에서 다른 저장소로 옮긴 깃이거나 로컬 깃에서 작성자를 잘못 설정하여
깃허브에 알 수 없는 사용자로 되어버리는 일이 생각보다 많습니다.
그럴 때 구글이 알려준 Rebase
를 사용한 방식은 특정 커밋의 일부 정보를 바꿔줍니다.
그런데 위 사진처럼 특정 하나하나가 아닌 관련 작성자 전체라면....?
안그래도 커밋에 나를 인식하지 못하는게 많이 존재하니 괜히 거슬립니다!🤔
그래서 해당 게시글은 커밋 작성자를 한꺼번에 수정하는 방법을 알아보도록 합시다!
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문을 제거하면 될 것 같습니다.
그럼 다음과 같이 모든 커밋을 쭉 탐색하며 돕니다.
커밋이 많을수록 좀 걸리더군요ㅎㅎ
push
하기git push --force --tags origin 'refs/heads/*'
다음과 같이 모든 브랜치를 강제푸시를 진행하면 모든 브랜치에 적용됩니다.
만약 특정 브랜치에만 적용하고 싶으면 아래와 같이 푸시하시면 됩니다.
git push --force --tags origin 'refs/heads/develop'
적용이 완료되었습니다! 신난다!
참고 : https://stackoverflow.com/questions/3042437/how-to-change-the-commit-author-for-one-specific-commit