커밋 후 푸시를 완료했어도 contribution에 반영되지 않고 있어 원격지의 commit을 살펴보았다.
author(작성자)가 달라서 생기는 문제였음을 확인할 수 있다.
사실 예전에도 이런 에러를 마주한 적이 있었는데, git을 처음 사용하던 때라 commit과 push 외에 다른 명령어를 사용한다는 것이 두려워 해결하지 못했었다.
아래는 예전의 잘못된 커밋 로그이다.
오늘, 같은 문제를 마주한 김에 이를 해결해보았다.
commit author(작성자) 수정
이런 현상은 왜 일어나는 것일까? 로컬에서 사용자의 정보(user.name, user.email)가 잘못 설정되어(혹은 설정을 안했거나) 있기 때문이다.
git config --list
명령을 통해 설정값을 확인할 수 있다.
1. git config
사용자 정보가 잘못 저장되어 있다면 이를 변경 혹은 생성하자.
위 과정은 commit을 수정하는 과정과는 무관하지만, 이후의 commit을 작성할때 같은 실수가 반복되지 않기 위해 해주는 과정이다.
2. git rebase 란?
말 그대로 re-base 한다고 생각하면 된다. 즉, branch의 base를 다시 설정한다는 의미이다.
또한, rebase
는 merge
와 달리, 별도의 merge commit을 생성하지 않는다.
위와 같은 특징으로 인해 rebase
는 기존의 commit log를 단장하거나 재정렬할때 쓰인다. 즉, rebase
는 기존의 commit을 수정할 수 있는 명령일 것이다. 때문에 rebase
를 사용하면 기존 commit의 내용 뿐만아니라 author(작성자)까지도 변경이 가능하다.
3. git rebase로 commit author 수정
author가 잘못된 commit을 보내게 되면 contribution에 반영되지 않는다.
1월 16일에 보낸 commit이 contribution에 적용되지 않았음을 확인할 수 있다.
3-1. 기준 commit 찾기
git log를 통해 수정하고 싶은 commit의 바로 전 commit의 hash값을 복사해온다.
3-2. git rebase
이렇게 하고 나면 edit을 표시한 commit에 대한 rebase가 진행된다.
3-3. author 수정
이렇게 입력하고 나면 커밋에 대한 에디터 창이 뜨게되는데 마찬가지로 :wq로 수정사항을 저장한다.
rebase를 진행할 commit이 더 있다면 아래 명령어를 입력하고 3-3
과정을 반복한다.
3-4. 원격 저장소(github)에 push
git push 명령을 사용하면 rejected가 발생하면서 push되지 않는다. f 옵션을 추가하여 강제로 push 한다.
성공적으로 commit author가 변경되었음을 확인할 수 있다. 또한 contribution에도 수정된 commit 2개가 추가되었다.