git commit
을 이용해 코드에 대한 수정을 깃허브에 반영할 때 잘 못된 작성자 정보가 반영되는 경우가 있다.
깃허브 계정 여러개를 같이 사용하는 경우나 개발 서버 하나를 여러명이 사용할 때 원하지 않는 계정 정보로 커밋이 남는 경우가 있다. 원하는 계정이 아닌 잘못된 계정으로 커밋 로그가 남게되어 컨트리뷰션에 남지 않거나 잘 못된 사람에게 문의가 갈 경우가 생긴다.
이 경우 git의 rebase 명령을 이용해서 커밋 작성자 정보를 수정할 수 있다.
우선 커밋 계정을 수정할 커밋의 바로 직전 커밋의 해시값을 확인하자. 해시 값을 보자. 이 케이스에서는 bec8b77
다. rebase 명령을 실행하자.
git rebase -i -p bec8b77
bec8b77
커밋 이후 작성된 모든 커밋들에 대해서 rebase를 진행하게 된다. 이 명령을 실행하면 에디터가 뜬다.
# 문자로 시작되는 라인은 전부 주석이고 중요한 라인은 pick
으로 시작되는 라인이다. 정보를 수정하고 싶은 커밋 앞에 있는 pick
을 edit
이라는 글자로 바꿔준다.
Commit 4에 해당하는 커밋의 작성자를 고칠 예정이므로 9886ca4에 해당하는 커밋의 pick
을 edit
으로 고쳐준다. 에디터 창을 저장 및 종료 (:wq)하면 rebase가 시작된다.
edit
으로 선택한 커밋부분으로 다시 돌아간 상태가 된다.
$ git commit --amend --author="사용자명 <이메일>"
위 명령어로 작성자 정보를 고쳐준다.
작성자 정보뿐만 아니라 커밋로그까지 수정할 수 있다. 마잔가지로 저장하고 종료하기 (:wq)를 하면 커밋이 반영된다. 그리고 난 다음 rebase를 진행한다.
git rebase --continue
수정할 사항이 여러개라면 이 과정을 반복하면 된다.
edit으로 선택한 모든 항목에 대해서 수정이 끝나면 "Successfully rebased and updated refs/heads/master"라는 메시지가 뜬다. 이제 리모트에 강제로 푸쉬해주자.
git push -f
강제 푸쉬가 완료되었다.
깃허브에 접속해보면 정상적으로 커밋 작성자가 변경된 것을 볼 수 있다. 다만 커밋 해시 값은 다른 값으로 수정되어 있는 것을 확인할 수 있다.
가끔 잘 못된 내용이 커밋 로그에 남는 경우가 있는데 사후에 바로 잡을 수 있으니 걱정하지 말기를...
댓글