[TIL] 230110
20230109
향해99 12기의 토이프로젝트를 진행하면서 처음으로 백엔드와 프론트엔드가 협업 프로젝트를 만들어보았다. 매번 혼자 pull
> commit
> pull
> push
만 했던 터라 네 명 모두 깃헙 협업은 처음 해보는 상황이라 무작정 부딪혀야만 했다.
우선 Git에 프로젝트를 공유하고 협업하고 최종적으로 Pull Requests
와 merge
까지 시키는 것을 목표로 삼았다.
시도
우선 한 명의 개발자가 새로운 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
라는 버튼을 찾았고, main
과 branch
를 동기화시켜 줬다.
그러고 나서 터미널에서 아래 명령어를 입력해 머지된 main repository
프로젝트를 pull
해왔다.
git pull origin main
그랬더니 자동으로 VSCode에 머지된 파일을 성공적으로 받을 수 있게 되었다.
알게 된 점
깃헙 웹사이트에서 꼭 Fork
를 동기화하고 git pull origin main
을 해야 할까? 명령어로만 두 가지 과정을 한 번에 해결할 수 없을까?라는 궁금증이 생겨 기술매니저 분들께 여쭤봤지만, 깃헙 웹사이트에서 fork
동기화 update 후 머지된 프로젝트를 받아오는 방법밖에 없다는 것을 알게 되었다.
fetch란 정확히 무엇인가에 대해 자세히 알아봐야겠다.
https://wayhome25.github.io/git/2017/07/08/git-first-pull-request-story/