이미 커밋해버린 author 정보 변경하기

taeheeyoon·2022년 3월 7일
2

Git

목록 보기
3/3
post-thumbnail

Git 사용자 설정

여러대의 컴퓨터나 여러개의 이메일 주소를 번갈아가면서 개발을 하다보면 git이 author 설정이 안되어 있는 경우가 있다.

아직 커밋을 하기 전이라면 아래와 같은 명령어로 git 사용자의 이름과 이메일을 설정할 수 있다.

git config --global user.name "sample"
git config --global user.email "sam@ple.com"
git config user.name "sample"
git config user.email "sam@ple.com"

지난 커밋 author 정보 변경

하지만 이미 무수히 많은 커밋을 해버렸으면..? 협업을 하는 프로젝트는 작업한 커밋의 author 정보만 변경해야되지만, 혼자 개발하는 사이드 프로젝트의 경우는 모든 과거 커밋 히스토리의 이메일과 이름을 변경할 수 있는 방법이 있다.
아래의 스크립트는 기존의 커밋을 덮어씌우기 때문에 신중히 사용해야한다.

git filter-branch --env-filter '
WRONG_EMAIL="wrong@example.com"
NEW_NAME="New Name Value"
NEW_EMAIL="correct@example.com"

if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
then
	export GIT_COMMITTER_NAME="$NEW_NAME"
	export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
then
	export GIT_AUTHOR_NAME="$NEW_NAME"
	export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

명령어를 입력하면 커밋의 시간 및 순서는 유지되고, 이름과 이메일만 변경된다!

git log

git log 명령어로 수정된 사항이 반영됬나 확인 후,
원격 저장소에 이미 올라갔다면 force 옵션을 추가로 설정해서 기존 커밋들을 덮어씌우면 된다.

git push -f

언제나 말하지만 force 옵션을 쓸 일이 없게 만드는게 가장 좋다.

Reference

www.git-tower.com/learn/git/faq/change-author-name-email

profile
생각하는 대로 살지 않으면, 사는 대로 생각하게 된다.

0개의 댓글