Skip to main content

Pull = Fetch + Merge

개요

git pull은 원격 저장소의 변경사항을 가져와서 현재 브랜치에 병합하는 명령어입니다. 이는 git fetchgit merge를 순차적으로 실행하는 것과 동일합니다.

동작 과정

1. git fetch

  • 원격 저장소의 변경사항을 로컬에 가져옵니다.
  • 로컬 작업 브랜치에는 영향을 미치지 않습니다.
  • 원격 추적 브랜치(remote-tracking branches)가 별도로 존재합니다.
    • origin/main
    • origin/develop
    • 기타 원격 브랜치들

2. git merge

  • 현재 브랜치에 타겟 브랜치를 병합합니다.
  • 예시: git merge origin/develop

3. git pull

  • 타겟 브랜치의 원격 변경사항을 가져와서 병합까지 완료합니다.

개인적인 사용 경험

git pull의 경우, "타겟 브랜치"의 원격 변경사항만 가져오기 때문에 여러 브랜치의 변경사항들을 한 번에 확인할 수 없어 불편합니다. 또한 프로젝트 진행 상황에 대한 전체적인 시야가 좁아질 수 있습니다.

현업에서 선호하는 방법

따라서 현업에서는 다음 명령어들을 주로 사용합니다.

# 원격 저장소와 완전히 동기화
# fetch와 달리 원격에서 삭제된 브랜치의 참조도 함께 정리됩니다
git fetch --prune

# 원격 추적 브랜치를 직접 병합
git merge origin/develop

장점

  • 전체적인 시야: 모든 원격 브랜치의 상태를 한눈에 파악 가능
  • 선택적 병합: 필요한 브랜치만 선택적으로 병합 가능
  • 안전성: fetch로 먼저 확인 후 병합하여 충돌 위험 최소화