참고용

Github) Fork한 저장소가 Public으로 전환되지 않을 때 - Mirror Push

tierr 2026. 3. 8. 18:23

상황

예전에 협업했던 레포지터리를 메인에 고정해두려고 했다. 다른 친구가 소유자인 레포지터리여서 Fork를 했는데.. 저장소를 공개로 설정 할 수 없었다. 내가 Contributor인데도 소유자가 Private로 설정해둬서 나도 공개가 안되는 상황.
깃허브 정책상 원본(Parent) 저장소가 'Private'이면, 거기서 포크해온 저장소도 강제로 'Private'이 유지된다고 한다.
이런 경우에 해결할 수 있는 방법인 Mirror Push를 하기로 했다.

 

Mirror Push

이 방법은 원본과의 연결 고리를 끊고, 내 소유의 새 공개 저장소를 만드는 방법이다.

진행 방법

  1. 새 저장소 생성
    깃허브에서 New Repository를 누르고, 이름을 정한 뒤 Public으로 생성
    (README 등 아무것도 생성하지 않은 빈 상태여야 함)
  2. 터미널(CMD) 열기
    아래 명령어를 순서대로 입력
# 1. 원본(상대방) 저장소를 임시 폴더에 복제
git clone --bare https://github.com/원본아이디/프로젝트명.git

# 2. 해당 폴더로 이동
cd 프로젝트명.git

# 3. 내 새 저장소로 강제 푸시 (거울처럼 그대로 복사)
git push --mirror https://github.com/내아이디/새저장소명.git

# 4. 임시 폴더 삭제
cd ..
rm -rf 프로젝트명.git

 

결과 확인

미리 만들어둔 빈 저장소에 내가 원하는 프로젝트가 미러푸쉬되어, 기존 원본과는 별개의 저장소가 만들어진다.

실제 확인해본 결과, 아래처럼 커밋내역이나 기여자가 기존 저장소와 동일하게 나타나는 것을 확인할 수 있다.

주의점

나의 경우는 보안이 중요한 프로젝트는 아니었기 때문에 위와 같은 방법으로 내 저장소에서 Public으로 공개했지만,

해당 코드가 회사의 기밀이거나 팀원들과 "외부 공개 금지" 약속을 했다면, 공개(Public)로 전환할 때 주의가 필요하다.

대화를 통해 잘 얘기해서 전환하도록 합시다.