우테코 미션을 진행하면서 하루 종일 잡고있던 날이 며칠 생기다보니, 이렇게 잔디에 탈모가 진행되어버렸다ㅋㅋ.. 때문에 이를 해결하기 위한 방법을 학습하게 되었고 함께 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
감사합니다. 덕분에 잘 반영했습니다.