Github) 이미 반영된 커밋의 이메일 수정하기
이미 github에서 commit이 반영된 이메일을 수정해야했다
stack of flow와 구글을 엄청나게 찾았지만 안전하고 확실한 방법을 찾기 힘들었다
왜 안전해야 했는가....
팀프로젝트로 나를 포함 네명의 팀원이 같이 repository를 공유하고 있었기 때문에 내가 같이 사용하는 repository를 건드렸다가 큰 일이 날 수 도 있었기 때문
그래서 깃허브에 직접 문의를 했고 몆차례 답변을 주고 받았다
깃허브에 직접 문의를 했는데 답변이 너무 무서웠다....나는 주니언데 고급 Git지식이 필요하고, 특히 협업하는 사용자가 있을경우 저장소를 상당히 방해한단다....
확실히 '여려운 방법' , 두렵습니다
제가 더 두려워요, 미칠꺼같아요
그래도 해결방법을 물어봤다
일단 결과를 말해보자면 성공
이 방법을 따라하실 분들은 공유하는 repository를 여러번 fork하여 연습후에 실제로 사용하시기를 권장드립니다
(저도 20번 정도 반복해서 연습했습니다...)
1. 이미 반영된 커밋내역에서 이메일을 변경하는 방법(내가 실제로 사용한 코드)
잘못된 이메일을 새로운 이메일로 변경하는 코드이다
OLD_EMAIL=(이 부분에 반영된 커밋내역에서 잘못 들어간 이메일을 git log 등을 통해 확인하여 넣는다)
CORRECT_NAME=(이 부분에 깃허브에 회원가입한 이름을 적는다)
CORRECT_EMAIL=(이 부분에 깃허브에 설정된 나의 이메일을 적는다, OLD_EMAIL이 CORRECT_EMAIL로 변경되는 것이다)
그리고 나서 강제로 푸시한다(ㄷㄷㄷ;;)
2. 결과
위 처럼 이상한 이메일로 잘못들어갔던 것이
정상적으로 원하는 이메일로 변경된것을 확인할 수 있다
팀 레포지토리의 contributors를 확인했을 때도 정상적으로 내가 포함된것을 확인할 수 있다
물론 내 잔디밭도 복구되었다
3. 과거 commit 내역을 변경하는 다른 방법
과거 commit 내역을 변경하는 방법이 하나 더있다
내가 실제로 사용한 방법은 이중에 하나였고, 또 다른 방법을 소개한다
https://www.git-tower.com/learn/git/faq/change-author-name-email/#Editing%20the%20Author%20of%20Past%20Commits
위 링크로 들어가면 방법이 두 가지 나오는데, 내가 사용한 방법 말고 나머지 하나를 간단하게 설명하겠다
간단하게 설명하자면 커밋을 선별하고 rebase 명령에 해시를 더하는 방법이다
1) 처음에는 pick인 상태
2) 바꾸고 싶은 해시 코드를 edit으로 수정하고
3) :wq 를 눌러서 나간다
나가면 터미널에 이러한 상태가 보일것이고
Git commit-amend를 이용하여 author 정보를 바꾼다
나처럼 이미 커밋을 굉장히 많이 한 상태, 게다가 여러명이서 진행하는 팀프로젝트의 레포지토리일 경우 굉장히 위험하고 복잡한 상황이 일어날 수 있다
이번일을 계기로 항상 깃허브를 사용할 때 commit, contributors, git log를 수시로 확인하여 이런 사건을 미연에 방지하자고 다짐하고 또 다짐했다....
위에서 말한것처럼 제가 한 방법을 사용하실 분들은 꼭 여러번 연습을 하고 정상적으로 커밋내역이 변경이 되는지 꼭꼭꼭 확인한 후에 실제로 사용하시길 바랍니다