우테코 미션을 진행하면서 하루 종일 잡고있던 날이 며칠 생기다보니, 이렇게 잔디에 탈모가 진행되어버렸다ㅋㅋ.. 때문에 이를 해결하기 위한 방법을 학습하게 되었고 함께 6기를 준비하는 프리코스 사람들에게 공유하면 많은 도움을 줄 수 있을 것 같아서 이렇게 글을 작성하게 되었다.
이유는 바로 Fork
한 레포지토리이기 때문이다.
Fork
란 어떤 원격 저장소(Remote Repository)를 자신의 원격 저장소로 복사하는 것이다.
여기서 일반적인 레포 복사인 clone
과 다른 점은
브랜치 분기
와 같이 원본
레포지토리에서 새로운
레포지토리를 분기하는 느낌이라는 점이 다르다.
💡 주로
오픈소스에 기여
하는 것과 같이 다른 레포지토리에 변경을 주고 싶을 때,Fork
한 브랜치에서 코드를 변경하고 이를 실제 레포지토리에 반영하기 위해PR
을 하는 방법으로 사용된다.
Fork
한 레포지토리에선 변경 사항이 발생하고, 변경 사항을 반영하기 위해 Upstream
레포지토리에 PR
을 날리는데
그 내용이 Upstream
레포지토리의 default 브랜치
에 반영되었을 때, 커밋 내용에 대한 잔디가 채워진다.
하지만 우테코 레포지토리로 보내는 PR은 제출 용도
이기 때문에 merge
되지 않을 것이며,
만약 merge
를 해주려 한다고 해도 몇천 개나 되는 PR
을 main 브랜치로 머지하려는 순간, 어마무시한 conflict
가 발생할 것이다.
그럼 나는 커밋을 했음에도 불구하고 잔디는 심을 수 없는 걸까?
그렇지 않다. 이 역시 해결할 수 있는 방법이 있다.
해결책으로Mirror Push
라는 것이 존재한다.
지금 하려는 것은 Fork
한 레포지토리에 했던 커밋을, 개인 레포지토리로 옮겨오는 작업이기 때문에
복사한 커밋을 붙여넣을 레포지토리를 생성한다.
일단 이렇게 붙여넣기 할 레포지토리가 생성되면 된다.
복사할 fork
레포의 링크를 복사한다.
$ git clone --bare https://github.com/githubID/forkedRepository.git
bare clone
한다.🤔 bare clone이 뭔데요?
간단히 말해서
git clone --bare
를 사용하면 저장소의히스토리
와브랜치 정보
만을 가지는 "가벼운" 복제본을 만들게 됩니다. 일반적으로 개발자가 작업할 필요 없는 경우에 사용됩니다.
주로 원격 저장소의백업
이나공유
목적으로 사용됩니다.
$ cd forkedRepository.git
$ git push --mirror https://github.com/userID/newRepository.git
fork 레포지토리
폴더로 이동하고 커밋을 복사할 new 레포지토리
의 주소 입력하여 mirror push
한다.🤔 mirror push가 뭔데요?
mirror push
는 Git 저장소를거울(mirror)
을 통해완전히 똑같은 모습
으로 반사하듯이 푸시(push)하는 작업을 의미합니다. 이것은 원격 저장소를 다른 원격 저장소로완전히 복제
하는 작업을 나타내며, 주로백업
또는 다른 환경으로 저장소를복제
할 때 사용됩니다.
그럼 이렇게 new 레포지토리
에 fork 레포지토리
에 커밋한 내용들이 반영되는 것을 확인할 수 있다.
메인 페이지에서 잔디까지 채워지는 것을 확인할 수 있었다.
🚨 주의할 점
만약 모든 설정을 끝마쳐
Mirror Push
가 반영되었음에도 불구하고 깃 커밋 내역이 반영되지 않아
잔디가 그대로라면,Mirror push
한 브랜치의default 브랜치
를 표시하길 원하는 커밋이 담긴 브랜치로 변경하여 해결할 수 있을 것이다.
이는 default 브랜치의 커밋 내역이 commit 내역으로 출력되는 것이기 때문이다.
감사합니다. 덕분에 잘 반영했습니다.