git 계정을 새로 만들어 사용하다 커밋을 하고 확인하는 과정에서 커밋 작성자가 이전 계정으로 표시되고 있음을 발견하였다.
git commit 작성자 변경
- push를 아직 하지 않았고 로컬에 있는 상태라면 git commit --amend 명령어를 이용해 직전 커밋을 수정할 수 있다.
- 바로 직전 커밋이고 다른 브랜치나 커밋에 큰 영향이 없을 상태라면 git reset HEAD^1을 이용해 HEAD를 돌린 후, git push origin +브랜치 이름을 이용해 강제 push하는 과정을 거치면 해결된다.
- 이미 git 저장소에 반영되었고 바로 직전 커밋이 아닌경우? -> 내가 겪은 상황에 해당한다.
rebase 이용해 commit 작성자 수정
- commit hash 값 찾기
변경할 대상 커밋을 찾아야 한다. github 사이트에서 커밋 내역을 보고 확인하는 방법과 git log 명령어를 이용해 확인할 수 있다.
이때, 변경할 커밋이 아닌 변경할 커밋 직전의 커밋 해시값을 이용해야한다. - rebase 대상 지정
터미널에서 현재 프로젝트 위치를 기준으로 앞서 찾은 해시값을 이용해 rebase 명령어를 시작하면 vi 에디터가 자동으로 열리는데 이때 변경 대상의 커밋 설정을 pick에서 edit으로 변경한다. (vi 에디터에서 입력하려면 'i', 변경사항 저장하려면 ':wq', 에디터 종료하려면 esc 버튼 사용) 이렇게 하면 rebase 대상으로 지정하기가 끝나고 진행모드가 시작된다. - rebase 대상 변경사항 적용
이제 eidt으로 바꿔줬던 commit에서의 변경사항을 입력하면 됩니다. git commit --amend --author="작성자명 <email주소>"를 이용하면 작성자를 수정할 수 있다. - rebase 종료
변경사항 적용이 끝났다면 git rebase --continue를 이용해 작업을 종료한다. 이때 edit으로 변경했던 커밋이 남아있다면 바로 이어서 다음 작업이 시작되기 때문에 3번으로 돌아가 똑같이 수행해준다. 작업할 내용이 없다면 성공적으로 rebase됐다는 메세지가 출력된다. - push
수정된 commit 내용이 로컬에 있기 때문에 다시 저장소로 push 해준다. 이때 rebase 수행이후의 작업이기 때문에 --force 혹은 +브랜치 이름을 이용해 강제로 push를 진행한다.
- 터미널
# git rebase -i {변경할 커밋의 이전 커밋의 해시값}
# -i(--interactive): 대화형 모드로 rebase를 실행할 수 있다
$ git rebase -i hash값
# 여기서 vi 에디터 열림
Stopped at ... commit message
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
$ git commit --amend --author="작성자명 <email주소>"
$ git rebase --continue
Successfully rebased and updated refs/heads/master.
$ git push origin +브랜치이름
- vi 에디터
edit hash값 commit message
pick hash값 commit message
# Rebase hash값..hash값 onto hash값 (2 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
https://madplay.github.io/post/change-git-author-name#google_vignette
git commit author 변경 (커밋 작성자 변경하기)
git commit 작성자를 잘못 입력하여 push까지 해버렸다. 커밋 작성자의 이름을 다시 바꿀 수 있을까?
madplay.github.io
'Github' 카테고리의 다른 글
[Git] git 계정 변경 (0) | 2024.01.17 |
---|---|
[Git] gitignore (0) | 2023.10.27 |