이메일을 변경하는 경우 커밋을 했던 작성자(Author) 이메일이 달라지기 때문에 잔디가 사라진다.
주의사항
- 원격 저장소 강제 푸시로 인해 Github 저장소의 기존 커밋들은 새로운 해시 값을 가진 다른 커밋으로 덮어쓰기 처리된다.
- 위 문제로 인해 다른 사람과 함께 공유하여 협업하고 있는 경우, 모든 로컬 저장소를 새로 커밋 받아야한다.
git-filter-repo
보다 안정성 및 속도가 낮다.$ git filter-branch -f --env-filter "GIT_AUTHOR_NAME='OLD NAME'; GIT_AUTHOR_EMAIL='OLD EMAIL'; GIT_COMMITTER_NAME='NEW NAME'; GIT_COMMITTER_EMAIL='NEW EMAIL';" HEAD
$ git log
# 제대로 변경되었는지 확인
$ git remote add origin 깃경로
$ git push -f origin main
git filter-branch
보다 훨씬 빠르고 안전하게 처리할 수 있다.$ git filter-repo --force --name-callback 'return name.replace(b"OLD NAME", b"NEW NAME")'
$ git filter-repo --force --email-callback 'return email if email != b"OLD EMAIL" else b"NEW EMAIL"'
$ git log
# 제대로 변경되었는지 확인
$ git remote add origin 깃경로
$ git push -f origin main