Pull = Fetch + Merge
개요
git pull
은 원격 저장소의 변경사항을 가져와서 현재 브랜치에 병합하는 명령어입니다. 이는 git fetch
와 git 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로 먼저 확인 후 병합하여 충돌 위험 최소화