FRONT-END/TIL

[TIL] 230110

서근 2023. 1. 10. 22:25
반응형

20230109

향해99 12기의 토이프로젝트를 진행하면서 처음으로 백엔드와 프론트엔드가 협업 프로젝트를 만들어보았다. 매번 혼자 pull > commit > pull > push만 했던 터라 네 명 모두 깃헙 협업은 처음 해보는 상황이라 무작정 부딪혀야만 했다.

 

우선 Git에 프로젝트를 공유하고 협업하고 최종적으로 Pull Requestsmerge까지 시키는 것을 목표로 삼았다.

시도

우선 한 명의 개발자가 새로운 Project repository를 생성하고 구성원으로 초대하거나 타깃 repository를 자신의 repository로 Fork 해줬다.

Fork로 생성한 본인 계정의 저장소에서 clone or download 버튼을 누르고 표시되는 url을 복사한다. 여기서 주의할 점은 타깃 repository의 url을 복사하는 것이 아닌 Fork를 통해 가져온 자신의 repository에서 클론을 해줘야 한다는 점이었다.

 

맥의 경우 명령어는 이러하다

cd 폴더 drag & drop
git clone 깃링크 주소

클론을 해줬다면 각자의 브랜치를 만들고 메인으로 풀리퀘스트를 날려주면 된다.

 

메인에 그냥 풀을 해버리면 repository가 사망할 수 있기 때문에 반드시 브랜치는 필수이다!

git checkout -b 아이디

이제 각자의 브랜치에서 수정/추가된 파일을 로컬 브랜치에서 깃헙 메인으로 push 해주고 타깃 프로젝트(main)로 Full Requests를 요청해 준다.

이제 마지막인 Main에서 merge를 해주면, 브랜치에서는 pull > fetch로 받아오기만 하면 되는데, 아무리 찾아도 merge 된 프로젝트를 pull 해오는 방법이 나오질 않았다.

 

처음 시도해본 것은 Compare changes탭에서 메인의 프로젝트를 브랜치로 옮겨오는 방법을 사용해 봤는데, 이역시도 잘 되지 않았다.

해결 방법

그러다 알게 된 하나의 문제를 발견했다. 바로 타깃 프로젝트의 레파지토리와 브랜치의 repository의 파일이 전부 달랐던 것!

 

혹시 동기화가 되지 않았는지 브랜치 repository의 프로젝트를 삭제하고 다시 클론 해서 동기화를 해봤지만 너무 비효율적이라고 생각, 당연히 이 방법은 아닐 것이라고 판단한 순간 브랜치 repository에서 Sync fork라는 버튼을 찾았고, mainbranch를 동기화시켜 줬다.

그러고 나서 터미널에서 아래 명령어를 입력해 머지된 main repository 프로젝트를 pull 해왔다.

git pull origin main

그랬더니 자동으로 VSCode에 머지된 파일을 성공적으로 받을 수 있게 되었다.

알게 된 점

깃헙 웹사이트에서 꼭 Fork를 동기화하고 git pull origin main을 해야 할까? 명령어로만 두 가지 과정을 한 번에 해결할 수 없을까?라는 궁금증이 생겨 기술매니저 분들께 여쭤봤지만, 깃헙 웹사이트에서 fork동기화 update 후 머지된 프로젝트를 받아오는 방법밖에 없다는 것을 알게 되었다. 

 

fetch란 정확히 무엇인가에 대해 자세히 알아봐야겠다.


참고 문헌 REFERENCE

https://wayhome25.github.io/git/2017/07/08/git-first-pull-request-story/