GitHub 기여 내역이 표시되지 않을 때
GitHub 기여 내역에 커밋이 표시되도록 이메일 설정을 확인하고, 과거 커밋의 작성자 정보를 수정하는 방법을 알아봅니다.
GitHub에 열심히 코드를 올리고 있었는데 기여 내역에 전혀 기록되지 않았습니다. 이유를 찾아보니 SourceTree에서 코드 작성자로 등록된 이메일과 GitHub 이메일이 달라서 기여로 인식되지 않았던 것이 원인이었습니다.
이 경험을 바탕으로 두 가지 방법을 설명하겠습니다.
- 저장소 작성자 계정을 GitHub 이메일로 변경하는 방법
- 이미 잘못 올린 커밋의 작성자를 변경하는 방법
저장소 작성자 이메일을 GitHub 이메일로 변경하기
- GitHub 설정의 Emails 탭에서 등록된 이메일을 확인합니다.
- 작업 중인 폴더에서 터미널을 열고 아래 명령을 입력합니다.
git config --list
설정값과 이메일 정보가 표시됩니다. 이 이메일은 GitHub 계정 이메일과 다를 수 있습니다.
- 아래 명령으로 이메일 설정을 변경합니다.
git config user.email "Your Github email address"
이 명령은 현재 디렉터리의 저장소 설정만 변경합니다. 모든 로컬 저장소의 이메일 주소를 변경하려면 아래 명령을 사용합니다.
git config --global user.email "Your email address"
이메일을 바꾼 뒤에도 기여 내역이 제대로 반영되지 않으면 이름을 확인하고 GitHub에 등록된 이름과 같게 변경합니다.
git config user.name "Your Github name"
이제부터 생성하는 커밋은 기여 내역에 정상적으로 등록됩니다. 그렇다면 이전에 올린 커밋은 어떻게 바꿀 수 있을까요?
이미 잘못 올린 커밋의 작성자 변경하기
이전 커밋의 해시를 확인한 뒤 rebase로 하나씩 변경할 수도 있습니다. 하지만 수정할 커밋이 수십 개라면 일일이 처리하기 어렵기 때문에 스크립트로 변경할 수 있습니다. 아래 스크립트는 각 저장소의 터미널에서 실행해야 합니다.
# git filter-branch: 브랜치의 모든 커밋을 다시 작성합니다.
git filter-branch --env-filter '
# OLD_EMAIL: 잘못 등록된 이메일 주소입니다.
OLD_EMAIL="old@example.com"
# CORRECT_NAME: 커밋에 사용할 올바른 이름입니다.
CORRECT_NAME="Your Correct Name"
# CORRECT_EMAIL: 커밋에 사용할 올바른 이메일 주소입니다.
CORRECT_EMAIL="correct@example.com"
# GIT_COMMITTER_EMAIL이 OLD_EMAIL과 같은지 확인합니다.
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
# 일치하면 커미터 이름과 이메일을 올바른 값으로 설정합니다.
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
# GIT_AUTHOR_EMAIL이 OLD_EMAIL과 같은지 확인합니다.
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
# --tag-name-filter cat: 태그 이름은 변경하지 않고 그대로 유지합니다.
# -- --branches --tags: 모든 브랜치와 태그에 필터를 적용합니다.
스크립트를 실행한 뒤 변경된 커밋 이력을 강제로 push합니다. 이제 과거 커밋도 기여 내역에 정상적으로 표시됩니다.