[Git] Git에 대한 이모저모

Eunbi Lee·2025년 5월 18일

SeaVantage

목록 보기
2/17
post-thumbnail

📝 Background

회사에서 업무를 진행하다, 문득 사이드 프로젝트와 실무에서의 Git 차이점을 발견하게 되었다.

어려운 내용은 아니지만, obsidian 에만 개인적으로 메모했다가 간단한 블로깅 토픽용으로도 적합할 것 같아 기술하게 되었다.

🔀 Tracking specific origin branch

내가 진행했던 사이드 프로젝트의 경우, 다음과 같이 크게 브랜치가 분류되었다.
(그리고 아마 대부분의 개발자들이 따르는 git branch flow라고 생각한다.)

  • main (배포)
  • develop (개발)
  • feat/#number (기능 개발)
  • fix/#number (버그 픽스)
  • refactor.#number (리팩토링)
  • .. etc

그리고 개발은 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 이 가능해진다.

Review

사이드 프로젝트를 진행할 때는 소규모의 사람들끼리 1부터 10까지 컨트롤하다보니,
특정 원격 브랜치의 tracking 이 안되는 현상을 맞닥뜨린 적이 없었다.

하지만, 회사에서 실무를 진행하면서 이미 개발이 어느정도 진행된 크고 많은 프로젝트에 참여하게 되면서 context 가 없는 상황을 마주하면서 크고 작은 이슈들을 마주하고 있다.

해당 포스팅처럼 작은 단위로 나눠서 이어서 기술해보자!

profile
안녕하세요, 개발자 비비입니다.

0개의 댓글