Git

Git | 잔디밭이 안채워질 때!! 커밋 작성자 변경하기

3jun 2021. 12. 28. 12:00

새로운 맥북에서 기존에 작업하던 레포지토리를 clone 받아 commit을 열심히 남기고 push를 하였는데..

이게 웬걸 잔디가 깔리지 않았다. 후다닥 확인해보니 이렇게 author가 바뀌어 있었다.

이럴 때 커밋 작성자를 변경하는 방법에 대해 알아보자.

 

우선 이런 일이 재발하지 않도록 예방해야 하므로

1. git user 설정

git config --global user.name "3jun"
git config --global user.email "kk3june@gmail.com"

user name과 email은 예시로 제가 사용하는 name과 email을 사용했다. 작업하실 때는 본인의 name과 email을 사용하시면 된다

git config --list

git user를 다시 설정했으면 git config --list 명령어를 사용하여 제대로 변경이 되었는지 확인하는게 좋습니다.

 

2. 작업할 커밋 확인

작성자가 잘못된 커밋이 어디인지 확인을 하고 다음 작업을 진행해야 한다. 

아래에서 두번째 커밋 이후로 작성자가 변경 되었다.

여기서 작성자가 잘못 설정된 커밋 위치에서부터 하게되면 해당 커밋 이후로 작업이 진행된다.

반드시 정상적으로 작성자가 설정된 커밋의 제일 마지막 커밋의 hash 값으로 작업을 해야한다. 

여기서는 a791168ab14692..  커밋이다.

3. rebase 사용하기

// git reabse i {변경할 커밋 이전 커밋의 hash값}
git rebase -i a791168ab14692f068661cfb7cbd559c1914c516

위 명령어를 입력하면 해당 커밋 이후의 커밋들이 아래와 같이 출력되는데

초기 값은 pick {hash값} {commit message} 이다.

i을 입력하여 insert 모드로 진입하고 변경할 커밋들의 맨 앞 pick을 edit 혹은 e 로 변경한 다음 

esc 누르고 wq를 입력하고 엔터를 치면 된다.

4. 작성자(author) 수정하기

3번 과정까지 끝마치면 이제 다시 터미널로 나오게 되고, edit으로 변경할 커밋들이 존재하기 때문에 여기서 부터 rebase를 진행하면 된다.

// git commit --amend --author="user이름 <email주소>"
git commit --amend --author="3jun <kk3june@gmail.com>"
git rebase --continue

edit 으로 수정한 커밋들은 모두 rebase 작업을 진행해야 한다.

제 경우에는 5개의 커밋의 작성자를 수정해야하기 때문에  위 코드를 다섯번 반복하였다.

5. 변경된 커밋들 push 하기

여기까지 작업이 끝났으면 작성자가 변경된 커밋들을 push 깃허브에 적용시켜줘야 한다. 

// git push origin +브랜치명
git push origin +main

 

여기까지 하시면 깃허브에서 작성자가 변경된 커밋들이 적용되고 잔디밭이 채워진 걸 확인하실 수 있다.