728x90

언젠가부터 github에 나의 commit이 보이지 않았다.

 

원인은 commit 정보에 담겨있는 user.email과 user.name이 github계정 정보와 다르기 때문이다.

 

0. 앞으로 새로 작성할 커밋부터 올바르게

git config --global user.name  "홍길동"
git config --global user.email "me@example.com"

 

1. 백업

git clone --mirror (원격리포주소) (생성 할 백업 폴더)

 

2. 매핑 파일(authors.map 또는 .mailmap) 작성

홍길동 <new@example.com> <old@example.com>
<new_work@example.com> <work@example.com>

 

<새 이메일> <옛 이메일> --> 이름 변경까지 원하면 앞에 "새 이름 <새메일> <옛메일>"

꺾쇠(괄호) 가 있어야 함

 

2-1. 기록된 이메일 확인

git log --all --format='%ae' | sort -u

 

3. 히스토리 재작성 명령

git filter-repo \
   --mailmap authors.map \       # 또는 --use-mailmap
   --force \                     # 작업 디렉터리 보호 대화 생략
   --refs $(git for-each-ref --format='%(refname)')   # 모든 브랜치·태그

 

파일명을 .mailmap 으로 두면 --use-mailmap, 임의 이름이면 --mailmap authors.map 옵션 사용.

 

 

4. 결과 확인

git log --all --format='%h %an <%ae>' | head
git log --all --format='%ae' | sort -u   # 더는 old@example.com 이 없어야 한다

 

5. 원격 반영

git push --force --all

 

팀원이 있을 경우 기존 커밋 해시가 모두 바뀌므로, 팀원에게 “레포를 새로 클론” 하도록 공지.

 

728x90