본문 바로가기

DEVELOP

[Github] 이미 push한 작성자 변경하기

728x90

깃허브의 계정을 회사, 개인 계정으로 분리하여 사용하였는데 이력관리 및 기여도를 높이고 싶기 때문에 하나로 계정을 병합하고 싶었다. 

 

그러기 위해선,

1. 회사에 개인 계정을 초대 요청

2. 기존 회사 계정으로 커밋 및 푸시해둔 부분을 찾아 작성자를 변경

 

이러한 노가다가 필요하다! 

 

(이 글은 push를 다른 사람 계정으로 잘못 반영했거나, 원치않은 계정으로 push를 날렸을 경우에도 유용하다.)


[변경 원하는 커밋 해시값 알기]

1번을 완료후, 

변경하고자하는 레파지토리를 로컬에 연결해둔 후 터미널 오픈

(VSCode로 프로젝트를 연결 > 왼쪽 상단 Terminal > New Terminal 로)

 

$git log 명령어를 입력후 커밋히스토리를 확인 및 깃허브 브라우저 해당 프로젝트 페이지에서 커밋내역 확인하여 변경원하는 커밋 해시값을 얻는다.

해시값은 아래 캡처 이미지 참고.

commit 내역

예를 들어 해시값이 c5abcz 라 한다면, 

$git rebase -i c5abcz^

만약 변경 대상 커밋 바로 전의 해시값을 구하면, 

$git rebase -i 변경전 해시값

 

그후 VSCode 창에 페이지 하나가 자동으로 뜨는데 대충

pick 해시값 커밋한내용

pick 해시값 커밋한내용

pick 해시값 커밋한내용

pick 해시값 커밋한내용

pick 해시값 커밋한내용

pick 해시값 커밋한내용

 

이런식으로 나올것이다. 변경 원하는 해시값을 찾아 pick을 edit로 변경하여 저장후 그 창을 닫는다.

그럼 터미널에서 

비슷하게 

git commit --amend 와

git rebase --continue 가 나올것이다. 


[작성자 변경하기]

 

🟡 $git commit --amend --author="user.name <user.email>"

 

(user.name과 user.email은 변경하고자하는 깃허브 계정의 이름과 이메일이다.)

 

위의 명령어를 입력하게되면 COMMIT_EDITMSG 라는 페이지가 뜨고 확인 후 닫게되면 해당 커밋의 작성자 변경완료!

 

🟡 $git rebase --continue

 

입력시 Successfully rebased and... 가 나오면 더이상 진행할 커밋이 없는것이고, 

만약 앞에서 pick을 edit로 변경할때 두개이상의 커밋을 eidt으로 수정하였더라면, 🟡 이 부분을 계속 반복해서 해야한다.(이래서 노가다....)

 

하다가 꼬이거나 이건 할 노가다 아니다 싶을때는 

$rm -fr ".git/rebase-merge"


[최종 반영하기]

 

강제 push 인 +로,

$git push origin +브랜치이름 으로 push!


[최종 반영후 되돌리고 싶다면]

$git reflog로 복구 시점 로그 찾고, 

$git reset --hard 커밋한해시값 입력

 

그후 다시 레파지토리에 push

 

$git push origin +브랜치이름 으로 push!