본문 바로가기
혼공

Git Commit 잔디 유지하면서 Repository 정리

by letsgomin 2026. 5. 3.

최근 개발공부를 하면서 깃허브 레포지터리 리스트가 난장판이 되었다.

그래서 사용하지 않는 레포지터리를 과감하게 삭제하는 시간을 가졌다.

그런데, 열심히 심은 깃 커밋 잔디가 같이 뿌리뽑혔다.

오늘은 뿌리 뽑힌 커밋 잔디를 심고, 레포지터리도 정리하는 방법을 알아보자.

구멍이 송송 뚤린 내 깃 커밋 잔디

잔디가 사라진 이유

GitHub의 기여도 그래프(일명, 깃 커밋 잔디)는 현재 존재하고 있는 레포지토리의 커밋 내역을 기반으로 실시간으로 계산된다고 한다.

즉, 레포지토리를 삭제하면 해당 프로젝트에서 쌓았던 커밋 기록들이 그래프에서 제외되고 마는 것이다.

잔디를 유지하면서 레포지터리를 정리할 수 있을까

위 제목의 내용을 달성하기 위해 내가 취한 전략은 다음과 같다.

1. 안 쓰는 레포지토리들을 하나로 합쳐서 '잔디 유지용 아카이브'를 만든다.(프로필 깔끔하게 정리하여 심리적 만족감)

2. 커밋 히스토리까지 합치는 작업을 통해 기존 커밋 기록 유지한다.

  - 단순히 파일을 복사해서 옮기는 것은 커밋 기록을 유지하지 못하기 때문에 Branch전략을 택했다.

[방법] 히스토리 유지하며 레포지터리 병합

1. 새로운 Private 레포지터리 생성(과잉된 나의 자의식을 위한 것: 남에게 깔끔하게 잘보이기)

  - 난 Github에서 "legacy-archive"라는 이름의 비공개 저장소를 만들었다.

2. 로컬에서 병합 작업 진행

# 1. 아카이브 레포지토리 클론
git clone https://github.com/사용자명/legacy-archive.git
cd legacy-archive

# 2. 합치고 싶은 기존 레포지토리를 원격지로 추가
git remote add old-project https://github.com/사용자명/old-project.git
git fetch old-project

# 3. 히스토리를 유지하며 병합 (기존 프로젝트의 메인 브랜치가 main인 경우)
git merge old-project/main --allow-unrelated-histories

# 4. (선택 사항) 폴더를 정리하고 싶다면 옮긴 후 커밋
mkdir old-project-folder
# 파일들을 해당 폴더로 이동시킨 후...
git add .
git commit -m "Merge: old-project added to archive"

# 5. 최종 푸시
git push origin main

3. 반복 (다른 레포지토리들도 위 과정을 반복해서 하나로 모은다)

  - Tip. 다만, 원격지 이름은 다르게 해줘야한다. (ex. old-project -> old_project_1 -> ...)

내 방법의 장단점 (AI선생님 피드백)

장점 단점
프로필 정리: 수십 개의 연습용 레포지토리가 하나로 줄어들어 깔끔해집니다. 복잡도: 나중에 특정 프로젝트의 특정 시점 코드를 찾기가 조금 번거로울 수 있습니다.
기록 보존: 삭제 시 사라지는 잔디를 안전하게 지킬 수 있습니다. 프로젝트 맥락 상실: 커밋 메시지들이 뒤섞여 전체적인 프로젝트 흐름을 한눈에 보기 어려울 수 있습니다.

추가팁

삭제된 레포지터리 복구하는 방법

GitHub은 실수로 삭제한 레포지토리를 90일 이내에 복구할 수 있는 기능을 제공한다.(역시 God Github!)

아래 경로에서 복구(Restore)할 수 있다.

- 경로: GitHub Settings > Repositories > Deleted repositories

- 주의 사항

    - 삭제한 지 90일 이내의 레포지토리만 이곳에 표시된다.

    - 방금 삭제하셨다면 시스템 반영에 약간의 시간이 걸릴 수 있으니 5~10분 뒤에 다시 새로고침해야한다.(필자도 삭제하고 급하게 들어갔는데 없어서 당황했다)

    - Fork한 레포지토리는 삭제 시 이곳에 나타나지 않으며 복구가 불가능할 수 있다.(직접 만든 레포지토리 위주로 확인할 수 있다)