GitHub/fork한 저장소 작업에 대한 커밋 반영하기
🌱 fork는 또 처음이라…
깃허브로 블로그를 옮기는 험난한 시행착오를 거쳐 드디어! 쫌 쓸만해졌군- 싶었는데 내 커밋이 누락되고 있었다는 걸 뒤늦게 알아차렸다🤨
커밋과 푸시를 한 후 웹에서 정상적으로 페이지가 노출되는 것 까지 다 확인이 되는데 잔디만 보이지 않는 이유가 뭘까-싶어 찾아보니, 테마를 적용하는 과정에서 해당 repository를 fork해왔기 때문이었다. 생각해보니 타인의 저장소를 포크해온 것 자체가 처음이었던 것. 조금 번거롭기는 해도 5분 정도면 해결할 수 있는 방법이 있었다.
✏️ 내 커밋이 프로필에 반영되지 않았던 이유?
Fork한 저장소 는 “원래 주인이 따로 있는 저장소” 라는 사실을 기억하자. 저장소를 단순히 복제해오는 clone과는 다르다! </br>
때문에 내가 해당 저장소에서 어떤 작업을 하고 푸시를 해도 원래 주인에게 __Pull Request를 보내서 merge하지 않는 이상, 내 commit은 contribution으로 *인정되지 않는다.*__
*cf. contribution을 추가하기 위한 조건 3가지
- commit한 계정이 GitHub계정과 같아야 한다.
- commit이 fork한 repository가 아니어야 한다.
- commit이 default 브랜치(메인/마스터 브랜치)에서 일어나야 한다.
✏️ 해결방법?
그냥 이대로 쓴다…는 해결방법이라 할 수 없겠지- 새 리파지토리를 만들어서 옮긴다 → 여태까지의 commit이 남지 않기 때문에 반쪽짜리 해결이라 할 수 있겠다.
- chatbot-virtual-assistant 로 fork된 리파지토리 분리 요청하기 → ticket을 제출하면 일정시간 소요 후 처리된 것을 확인할 수 있다고 한다. 자세한 내용은 해당 포스팅 참조
- bare clone 후 push mirror 로 진행
- GitHub에 새로운 저장소 생성 : 최종적으로 옮겨 갈 new-repo 를 생성한다.
- 터미널을 열어 로컬에 기존 저장소(fork해 온 저장소. 잔디심기가 반영이 안되는 old-repo)를 bare clone 한다.
→git clone --bare {fork한-old-repo}.git
(* bare clone? Git에서 작업 디렉터리 없이 저장소 데이터만 포함하는 클론을 의미) - new-repo로 mirror push
→git push --mirror {new-repo}.git
이 단계까지 정상적으로 실행이 되었다면 내 기존 commit이 반영된 것을 확인할 수 있다. - 기존 리파지토리(old-repo)와 bare clone으로 인해 생성된 로컬 저장소를 삭제해준다.
Leave a comment