본문 바로가기

개발(합니다)/TOOL

[git] commit 한 author 변경(작성자 변경) 방법

반응형

git으로 버전과리를 하고 커밋 단위별로 관리되기 때문에 누가 작성했는지는 굉장히 중요합니다.

git을 사용하다보면 작성 내용이나 작성자를

변경하고 싶은경우가 있거나 커밋 이력을 제거하고 싶을 때 사용하는 방법입니다.


커밋만 했을 경우와 푸시까지 했을 경우에는 차이가 있습니다.

commit만 했을 경우

아래 명령어로 변경할 수 있습니다.

> git commit --amend --author="otrodevym@gmail.com"

push까지 했을 경우

로컬과 원격지에 이미 반영되어 있고 잘못 커밋한 내역도 없애고 싶은 경우에는 rebase를 이용합니다.

1. 변경할 커밋 바로 이전의 커밋 해시값 찾기

git log로 커밋 내용과 해시값을 확인합니다.

예를 들어 commit 2f69a1daebea2dfabbd3148a8b229a6d81be9d2d 수정하고 싶은 해시값을 찾고
직전 해시 값인 commit 99551282f69fc880b7ab94fee98a563cddf7bd57 를 확인합니다.

> git log

2. git rebase -i입력

rebase를 이용해 수정하기 위해 아래 명령어를 입력합니다.

수정하고 있는 내용이 있으면 아래와 같은 에러가 발생합니다.

> git rebase -i 99551282f69fc880b7ab94fee98a563cddf7bd57

입력하면 아래 사진과 같이 pick 해시값 커밋내용 형태로 표시됩니다.

사용 설명처럼 pick -> e 로 수정하고 :wq 로 저장합니다.

3. git commit --amend --author=작성자

작성자를 변경하기 위해 아래 명령어를 입력합니다.

> git commit --amend --author="otrodevym__ <otrodevym__@gmail.com>"

명령어를 입력하면 변경 사항이 적용된걸 확인할 수 있습니다.

다시 wq로 나오면 변경된 파일 혹은 기존 커밋되었던 내용들이 다시 적용되는걸 확인할 수 있습니다.

4. 로컬 반영

아래 명령어로 rebase를 종료합니다.

> git rebase --continue

5. 원격지에 반영

-f를 사용하거나 +브런치 로 강제 진행할 수 있습니다.

> git push origin -f master
> git push origin +master 

반영된걸 확인할 수 있습니다.

6. 반영 사항을 다시 되돌리는 방법 : reflog

방금 rebase했던 내용이 알고보니 잘못되었고 처음에 작성한게 맞다면
되돌려야 하며 이때 사용하는 명령어가 reflog가 있습니다.

6-1. reflog로 과거 내역 보기

아래 명령어를 찾으면 작업한 내역을 확인할 수 있습니다.

> git reflog

6-2. reset으로 원하는 시점으로 돌아가기

원하는 시점은 2f69a1d 로 이 글의 처음 해시값입니다.

> git reset --hard 2f69a1d

반응형