커밋 Author 정보 수정하기

Hyuno Choi·2021년 7월 31일
0

Git 일반

목록 보기
1/2
post-thumbnail

2021년 7월 31일

사건의 발단

<유튜브 클론코딩> 시리즈를 진행하면서 열심히 커밋을 만들고 있을 때였습니다. 분명 원격 저장소에 커밋을 푸쉬했는데도 깃 contributions 이력이 초록색으로 채워지지 않았습니다. 그 당시에는 단순한 오류로 생각하고 넘어갔습니다.

그런데 프로젝트를 진행한지 일주일이 넘어가고 커밋 수가 70개에 가까워졌는데도 contributions 이력은 그동안 한 번도 채워지지 않았습니다. 이상함을 느껴 프로젝트 리포지토리 페이지에 들어가 커밋 이력을 확인해보았습니다. 원래 "Hyuno Choi"라고만 되어있어야 할 Author 부분이 Author와 Commiter로 나뉘어 있었습니다.

처음에는 윈도우에서 맥으로 운영체제를 바꿔서 그런 건가 싶었습니다. 구글링을 해본 결과 커밋의 이메일 주소가 리포지토리 주인의 이메일 주소와 일치하지 않아 발생하는 현상이라고 합니다.

VS code에 들어와 Git Graph를 열어 그동안 날렸던 커밋을 확인해보니 제 이메일 주소 대신 hyunochoi@Hyunoui-MacBookPro.local이라는 내용이 들어가 있었습니다. 맥북을 처음 수령하고 개발 환경을 설정할 때 git config 설정도 분명 했던 것 같은데 아마 그때 무언가 잘못되었던 것 같습니다.

rebase -i

Author 관련 정보도 커밋 구성의 일부이므로 수정할 수 있는 여지는 충분하다고 생각했습니다. 그리고 수정한 커밋을 다시 깃허브에 --force 로 푸쉬하면 될 것입니다.

구글링 결과 예상했던 대로 rebase -i 명령을 사용하여 커밋을 수정할 수 있었습니다.

$ git rebase -i 커밋 해쉬태그

이 명령은 제일 마지막에 만든 커밋부터 해쉬태그 커밋 전까지를 수정 범위로 만듭니다. 바로 이 '해쉬태그 커밋 전까지만' 포함되는 문제 때문에 첫 번째 커밋을 수정할 수 없었습니다.

$ git rebase -i --root 명령어를 사용하면 모든 커밋이 리베이스 범위에 들어오게 됩니다. 저는 처음부터 잘못 커밋했으므로 모든 커밋을 범위로 지정해주었습니다.

pick 65ac929 First commit
pick aa3bb09 Second commit
pick 7896dd4 Thrid commit

# Rebase 7896dd4 onto 3e0e6f5 (3 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
...

프로젝트 폴더에서 리베이스 명령어를 치면 이런 vim 편집기 창이 뜨게 됩니다. 위의 내용은 포스팅을 위해 연습용 폴더를 만든 것입니다. 맨 위에는 리베이스 명령에서 지정해준 범위에 해당하는 커밋 리스트가 있는습니다. 여기서 수정하고 싶은 커밋 앞 글자를 pick 에서 edit 혹은 e 로 바꾸면 됩니다.

edit 65ac929 First commit
edit aa3bb09 Second commit
edit 7896dd4 Thrid commit

vim 편집기이기 때문에 수정할 때는 i 키를 눌러 입력모드로 들어가야 하고, 수정이 끝난 후에는 esc 를 눌러 명령모드에 들어간 후에 :wq 를 눌러 저장 후 종료합니다.

이제 edit 하겠다고 한 커밋들이 순서대로 리베이스 모드에 들어갑니다. 제가 해야할 것은 author 정보 수정이므로 다음 명령어를 입력합니다.

git commit --amend --author="Author < email@email.com > "

Author 에는 본인의 이름, email 에는 이메일 주소를 넣으면 됩니다. 저는 "Hyuno Choi <soonitoon@gmail.com>"이라고 적었습니다.

어멘드를 하면 커밋 메시지를 수정할 수 있는 vim 편집기 창이 뜹니다. 커밋 메시지는 그대로 둘 것이므로 바로 :q 를 눌러 나갑니다. 이제 다음 커밋의 저자를 수정하기 위해 git rebase --continue 명령어를 입력합니다. 그러면 다음 커밋의 차례가 됩니다. 이렇게 범위 안의 모든 커밋을 거치면 Successfully rebased 라는 메시지와 함께 리베이스가 끝나게 됩니다.

결론

일련의 과정을 70번... 가량 거치고 나서야 잃어버렸던 2주 가량의 잔디를 되찾을 수 있었습니다.

70여 건의 커밋을 수정하느라 시간을 쓰긴 했지만, 그래도 깃을 사용하며 일어날 수 있는 문제를 한 건 해결했다는 생각에 기분이 나쁘지만은 않습니다🙃


<참고 문서>

profile
프론트엔드 웹 개발자를 목표로 하고 있습니다.

0개의 댓글