Git브랜치와 협업

upstream과 remote tracking branch

내 로컬 브랜치가 어떤 원격 브랜치를 따라가고 있는지와, `origin/main` 같은 remote tracking branch를 어떻게 읽어야 하는지 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

text
git switch -c feature/login --track origin/feature/login
git branch -vv
git push -u origin feature/login

설명

  • origin/main 같은 이름은 실제 원격 저장소에 붙어 있는 브랜치 그 자체가 아니라, 로컬이 마지막으로 알고 있는 원격 상태를 가리키는 remote tracking branch입니다. 즉 "원격 브랜치의 로컬 사본 같은 기준점"이라고 이해하면 쉽습니다.
  • upstream은 내 현재 브랜치가 기본적으로 비교하고 push/pull할 상대 브랜치를 뜻합니다. 이 연결이 잡혀 있어야 git pull, git push를 짧게 쓸 때 Git이 어디와 동기화할지 알 수 있습니다.
  • git branch -vv를 보면 각 브랜치가 어떤 upstream을 따라가는지와, 원격과 몇 커밋 차이 나는지를 함께 볼 수 있습니다. 협업이 복잡해질수록 이 정보가 아주 중요해집니다.
  • 이 주제의 핵심은 "로컬 브랜치", "remote tracking branch", "실제 원격 브랜치"를 머릿속에서 구분하는 것입니다. 이 셋을 섞어 생각하면 fetch, pull, push 동작이 자주 헷갈립니다.
  • 좋은 습관은 새 작업 브랜치를 push할 때 -u로 upstream을 바로 설정하는 것입니다. 그러면 이후 명령이 짧아지고, 협업 흐름도 더 예측 가능해집니다.

빠른 정리

개념의미
로컬 브랜치현재 내 작업 브랜치
remote tracking branch로컬이 기억하는 원격 상태
upstream내 브랜치가 기본으로 따라갈 상대
git branch -vvupstream 연결과 차이 확인
git push -u첫 push와 upstream 설정 함께 수행

주의할 점

origin/main을 보고 있다고 해서 원격 저장소를 실시간으로 보고 있는 것은 아닙니다. fetch 전에는 remote tracking branch도 오래된 정보일 수 있으니, 최신 상태 확인 전제는 git fetch입니다.

참고 링크

2 sources