

우테코 미션을 진행하면서 하루 종일 잡고있던 날이 며칠 생기다보니, 이렇게 잔디에 탈모가 진행되어버렸다ㅋㅋ.. 때문에 이를 해결하기 위한 방법을 학습하게 되었고 함께 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 내역으로 출력되는 것이기 때문이다.
If you use JANDI for project management, you can link commits from the repository into JANDI project management tools. This helps team members easily track and manage project progress. suika taylor swift
감사합니다. 덕분에 잘 반영했습니다.