안경잡이개발자

728x90
반응형

  간혹 깃(Git)을 이용하다 보면 커미터(Committer)의 이름을 바꾸고 싶을 때가 있습니다. 혹은 깃 계정이 변경되거나 해서 이전 계정으로 커밋되어 있는 내용을 현재 계정으로 변경해야 할 때가 존재할 수 있습니다.


  저의 경우는 깃으로 소스코드를 작성할 때 이메일을 잘못 설정해서 다음과 같이 계정 이름만 ndb796이고, 이메일은 이상하게 등록되어 있는 상태였습니다. 따라서 이메일을 바르게 다시 작성할 필요가 있었습니다.



  이 때는 가장 먼저 해당 깃 프로젝트를 클론 하시면 됩니다. 그리고 해당 깃 프로젝트 경로로 들어갑니다.


git clone {깃 프로젝트}
cd {깃 프로젝트}


  이후에 깃(Git) 로그를 확인하여 잘못된 계정으로 커밋되어 있는 내용을 확인합니다.


git log


  저는 다음과 같이 ndb796@email.com이라는 이상한 이메일로 커밋이 되어 있는 상태였습니다.



  따라서 리눅스(Linux) 환경을 기준으로 다음과 같은 명령어를 넣으시면 됩니다.


git filter-branch --env-filter '

OLD_EMAIL="{예전 이메일}"
CORRECT_NAME="{현재 이름}"
CORRECT_EMAIL="{현재 이메일}"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags


  저는 ndb796@email.com으로 작성되어 있는 커밋을 ndb796@naver.com으로 변경했습니다.



  위 명령어 입력 이후에 다시 깃(Git) 로그를 확인해 보니 다음과 같이 정상적으로 변경되어 있는 것을 확인할 수 있었습니다.


git log


  이제 변경된 내용을 강제로 푸시하시면 됩니다. 다만, 강제로 푸시하실 때에는 원하지 않은 커밋 내용이 반영될 여지가 있기 때문에 유의할 필요가 있습니다. 다음의 명령어로 마스터(Master) 브랜치의 변경된 내역을 푸시할 수 있습니다.


git push --force --tags origin 'refs/heads/master'


  푸시 이후에 실제로 깃 허브(Git Hub)에 가보시면 다음과 같이 커밋 내역이 수정되어 있는 것을 확인할 수 있습니다.



  깃 수정이 완료된 이후에는 임시적으로 클론(Clone)을 수행했던 해당 깃 프로젝트 폴더를 제거합니다.




728x90
반응형