어제 새벽까지 졸린 눈을 비벼가며 코딩을 마치고 뿌듯하게 git push를 날렸는데, 다음 날 아침 GitHub 프로필을 확인해보니 잔디밭이 휑하니 하얗게 비어있던 적 있으신가요? 😭 저 역시 처음 개발자 취업을 준비할 때, 며칠 동안 심혈을 기울여 작업한 토이 프로젝트의 커밋들이 잔디에 전혀 반영되지 않아 등줄기에 식은땀이 흘렀던 기억이 생생합니다.
개발자 이력서에서 깃허브의 ‘초록 잔디(Contributions Graph)’는 지원자의 꾸준함과 학습 열정을 직관적으로 보여주는 중요한 지표 중 하나입니다. 그런데 분명 커밋 기록은 레포지토리에 잘 남아있는데 왜 내 프로필 잔디에는 반영되지 않는 걸까요? 사실 깃허브가 기여도를 카운트하는 알고리즘은 생각보다 엄격하고 명확합니다. 오늘 소개해 드리는 핵심 체크포인트 3가지만 확인하시면 5분 안에 사라진 잔디를 깔끔하게 되찾으실 수 있습니다! 😊
1. 로컬 Git 이메일과 GitHub 계정 이메일 불일치 📧
잔디가 심어지지 않는 원인의 약 80% 이상은 바로 로컬 Git에 등록된 작성자 이메일 주소의 불일치 때문입니다. Git은 커밋을 생성할 때 로컬 PC 환경설정에 저장된 user.email 정보를 메타데이터로 영구 기록합니다. 그런데 깃허브는 푸시된 커밋의 작성자 이메일이 내 GitHub 계정에 등록된 이메일과 토씨 하나 틀리지 않고 일치할 때만 내 잔디로 인정해줍니다.
회사 컴퓨터나 학교 실습실, 혹은 새 노트북을 세팅하면서 임의로 설정한 이메일이나 오타가 섞인 이메일로 커밋을 남기면, 깃허브 입장에서는 ‘누가 커밋했는지 알 수 없는 유령 커밋’으로 처리해버리는 것이죠. 지금 당장 터미널을 열고 본인의 로컬 이메일 설정을 점검해보세요.
| 확인 및 변경 구분 | 터미널 명령어 | 설명 |
|---|---|---|
| 현재 등록된 이메일 확인 | git config user.email |
현재 레포지토리에 지정된 이메일 출력 |
| 전역(Global) 이메일 수정 | git config --global user.email "내이메일" |
PC 전체에 GitHub 연동 계정 이메일 적용 |
| 현재 프로젝트만 이메일 수정 | git config user.email "내이메일" |
해당 디렉토리 한정으로 이메일 분리 적용 |
GitHub 웹사이트의 저장소 커밋 내역(Commits) 페이지로 이동해보세요. 내 프로필 사진 대신 정체불명의 회색 기본 아바타가 표시되거나, 닉네임을 클릭했을 때 내 프로필 페이지로 이동하지 않는다면 100% 이메일 불일치 문제입니다!
2. 기본 브랜치(Default Branch)에 병합되지 않은 커밋 🌿
이메일 설정이 완벽한데도 잔디가 심어지지 않는다면, 현재 작업 중인 브랜치(Branch) 환경을 확인해야 합니다. 협업이나 기능 단위 개발을 위해 develop, feature/login 같은 별도 브랜치를 파서 작업하는 것은 훌륭한 개발 습관이지만, 깃허브의 기여도 정책에는 특별한 규칙이 존재합니다.
깃허브는 오직 저장소의 기본 브랜치(주로 main 또는 master)에 직접 커밋되었거나, Pull Request(PR)를 통해 기본 브랜치로 병합(Merge)이 완료된 커밋만을 공식 잔디로 집계합니다. 작업 브랜치에만 수십 번 커밋하고 푸시해 두었다면, 해당 브랜치가 메인으로 합쳐지기 전까지는 잔디밭에 카운트되지 않는 것이 정상입니다.
GitHub Pages 배포용으로 자주 쓰이는
gh-pages 브랜치나 임시 테스트용 브랜치는 기본 브랜치가 아니라면 잔디 집계에서 제외됩니다. 기능 개발이 완료되었다면 주저하지 말고 main 브랜치로 PR을 올리고 Merge를 진행하세요. 머지 완료 즉시 과거 커밋 일자에 맞춰 잔디가 한꺼번에 초록빛으로 채워집니다.
3. 비공개(Private) 저장소 설정 및 Fork 저장소의 함정 🔒
세 번째 원인은 저장소의 권한 및 생성 방식과 직결됩니다. 많은 개발자분들이 개인 포트폴리오 코드 유출이나 API 키 노출을 방지하기 위해 저장소를 Private(비공개)으로 생성하곤 하는데요. 이때 깃허브 프로필의 기본 설정 상태에 따라 잔디가 완전히 숨겨질 수 있습니다.
GitHub 프로필은 기본값으로 공개(Public) 저장소의 기여도만 외부로 노출하도록 되어 있습니다. 따라서 비공개 레포지토리에서 아무리 부지런히 코딩했더라도, 프로필 설정에서 비공개 기여도 표시를 체크하지 않으면 채용 담당자는 물론 본인의 화면에서도 잔디가 온데간데없이 사라진 것처럼 보이게 됩니다.
📌 비공개(Private) 잔디 활성화 방법 3단계
- 내 GitHub 프로필 메인 화면으로 이동합니다.
- 잔디 그래프 우측 상단의 [Contribution settings] 드롭다운 메뉴를 클릭합니다.
- ‘Private contributions’ 항목을 체크하여 활성화합니다. (코드 내용은 숨겨진 채 잔디 개수만 깔끔하게 공개됩니다)
또한, Fork(포크)한 저장소에서 작업할 때도 주의해야 합니다. 오픈소스나 타인의 레포지토리를 포크하여 내 계정으로 가져온 경우, 포크된 복사본에서 커밋한 내용은 잔디로 인정되지 않습니다. 반드시 원본 저장소(Upstream)로 PR을 보내 머지되어야만 잔디가 심어지므로, 순수 개인 학습용 프로젝트라면 포크 대신 저장소를 새로 생성(New Repository)하여 소스코드를 푸시하는 것이 안전합니다.
🔢 나의 잔디 누락 원인 1초 자가진단기
현재 본인이 겪고 있는 증상을 선택한 후 진단하기 버튼을 눌러보세요.
실전 꿀팁: 날아간 과거 커밋 1분 만에 일괄 복구하기 📚
“이미 잘못된 이메일로 며칠 동안 수십 개의 커밋을 푸시해버렸는데, 커밋 히스토리를 전부 되돌리고 다시 커밋해야 하나요?”라고 절망하시는 분들이 계실 텐데요. 전혀 걱정하실 필요 없습니다! git rebase나 복잡한 스크립트를 돌려 이전 커밋들을 수정할 필요 없이, 단 1분 만에 과거 커밋들을 모두 초록색 잔디로 되살리는 마법 같은 비법이 있습니다.
📝 실제 사례: 주니어 개발자 K씨의 2주치 잔디 부활기
- 상황: 회사 노트북에서 개인 깃허브로 사이드 프로젝트를 진행했으나 이메일 설정이 달라 14일 동안 잔디 누락 발생
- 원인 발견: 깃허브 커밋 기록에 회사 이메일(
k@company.com)이 찍혀 있는 것을 확인
초간단 해결 순서
1) GitHub 웹 우측 상단 프로필 클릭 → [Settings] 이동
2) 좌측 메뉴 [Emails] 선택 후 ‘Add email address’에 커밋에 찍힌 잘못된 이메일 추가 입력
3) 전송된 인증 메일에서 확인 버튼 클릭 완료!
최종 결과
→ 깃허브가 해당 이메일을 본인 소유로 즉시 인식하면서, 과거에 누락되었던 2주치 40여 개의 커밋이 1분 만에 잔디밭에 일괄 반영되었습니다! 🎉
이처럼 GitHub은 계정에 여러 개의 보조 이메일(Secondary Emails)을 등록할 수 있도록 지원합니다. 오타가 났거나 과거에 사용했던 이메일이라도 계정에 추가하기만 하면 해당 이메일로 작성된 모든 과거 커밋이 내 계정의 기여도로 즉각 복원됩니다.
GitHub 잔디 누락 해결 핵심 3원칙
자주 묻는 질문 ❓
취업과 이직을 준비하는 과정에서 성실하게 채워나가는 깃허브 잔디밭은 개발자로서의 꾸준한 노력을 대변해 주는 소중한 자산입니다. 오늘 정리해 드린 이메일 점검, 기본 브랜치 머지, 비공개 저장소 설정만 잘 기억해 두신다면 다시는 아까운 커밋이 헛수고가 되는 일은 없을 거예요! 여러분의 깃허브 프로필이 풍성하고 푸른 잔디밭으로 가득 차길 응원합니다. 혹시 적용 과정에서 막히는 부분이 있다면 언제든 댓글로 편하게 물어봐주세요~ 😊