
회사에서 업무를 진행하다, 문득 사이드 프로젝트와 실무에서의 Git 차이점을 발견하게 되었다.
어려운 내용은 아니지만, obsidian 에만 개인적으로 메모했다가 간단한 블로깅 토픽용으로도 적합할 것 같아 기술하게 되었다.
내가 진행했던 사이드 프로젝트의 경우, 다음과 같이 크게 브랜치가 분류되었다.
(그리고 아마 대부분의 개발자들이 따르는 git branch flow라고 생각한다.)
그리고 개발은 develop 브랜치로부터 작업 중인 branch 에서 git pull 을 받는 것부터 시작한다.
얼마 전, 업무 중에 주로 작업하던 프로젝트의 repository 가 아니라 다른 repository 를 볼 일이 있었다.
이때, 동료가 작업한 특정 브랜치의 내역을 확인하기 위해 브랜치 체크아웃을 시도했는데 로컬에서 해당 브랜치의 원격 브랜치를 tracking 하지 못하는 상황을 마주했다.
🤔 git-lab 상에서는 노출된 origin feat/#number 브랜치가 왜 IDE 상에서는 tracking 하지 못하는 걸까?
열심히 서칭하면서 알아본 결과, git config 파일 수정을 통해 origin 의 특정 branch 를 tracking 할 수 있게 바꿀 수 있다는 것을 알았다.
수정할 부분은 다음과 같다.
(수정 전)
fetch = +refs/heads/develop:refs/remotes/origin/develop
(수정 후)
fetch = +refs/heads/*:refs/remotes/origin/*
수정 전 내역의 경우 원격 저장소의 develop 브랜치만 가져와서
로컬의 origin/develop에 업데이트 를 시도하는데, develop 브랜치에 대해서만 fetch 를 통한 동기화를 시도한다.
따라서 내가 시도했던 것처럼 원격의 다른 브랜치의 내역에 대해 fetch 및 pull 을 하기 위한 tracking 자체가 불가능했던 것이었다.
따라서 이를 수정 후처럼 변경하면, 원격 저장소의 모든 브랜치(*)를 가져와서,각각 로컬의 origin/<브랜치명>에 매치를 진행한다.
예를 들자면, 아래와 같다.
refs/heads/feature/login -> refs/remotes/origin/feature/login
따라서 위와 같이 수정하면, 정상적으로 동료들이 작업한 특정 원격 브랜치의 내역을 로컬로 fetch 또는 pull 이 가능해진다.
사이드 프로젝트를 진행할 때는 소규모의 사람들끼리 1부터 10까지 컨트롤하다보니,
특정 원격 브랜치의 tracking 이 안되는 현상을 맞닥뜨린 적이 없었다.
하지만, 회사에서 실무를 진행하면서 이미 개발이 어느정도 진행된 크고 많은 프로젝트에 참여하게 되면서 context 가 없는 상황을 마주하면서 크고 작은 이슈들을 마주하고 있다.
해당 포스팅처럼 작은 단위로 나눠서 이어서 기술해보자!