Git

[Git] Fetch와 Pull의 차이점

Castle Bird 2025. 11. 25. 10:39

1. Fetch 란?

  • 원격 저장소의 최신 커밋 정보를 로컬의 origin/* 브랜치에 업데이트한다.
  • 로컬 브랜치(main, feature 등)는 변경되지 않는다.
  • merge 또는 pull을 해야 로컬 브랜치에 반영된다.
  • 안전하게 원격 상태만 확인하고 싶을 때 사용된다.
$ git fetch origin 

# 또는

$ git fetch origin <브랜치명>

 

즉 원격 저장소(Git Hub, Git Lab 등등)의 최신 정보를 받아 오기 전, 충돌없이 내 파일과 미리 비교해볼 수 있는 비교적 안전한 방법이다. 작업 파일이 많거나 중요해도 충돌 걱정없이 최신 정보들과 안전하게 비교해볼 수 있다.

 


 

2. Pull 이란?

  • 원격 저장소의 최신 커밋을 로컬의 origin/* 브랜치에 가져오고, 해당 내용을 현재 로컬 브랜치에 자동으로 merge 또는 rebase한다.
  • 로컬 브랜치(main, feature 등)가 직접 변경된다.
  • fetchmerge 과정을 한 번에 수행하는 명령이다.
  • 원격 변경 사항을 즉시 로컬 작업 브랜치에 반영하고 싶을 때 사용된다.
$ git pull  

# 또는

$ git pull origin <브랜치명>

즉, 원격 저장소(GitHub, GitLab 등)의 최신 정보를 받아오고 그 내용을 바로 내 로컬 브랜치에 반영(변경)할 때 사용된다.
로컬 파일이 즉시 변경되므로 충돌이 발생할 가능성이 상대적으로 높다.

작업 파일이 적거나 중요하지 않은 경우에는 바로 pull을 사용해도 괜찮지만, 그렇지 않은 경우에는 먼저 fetch로 원격 상태를 확인하고 비교한 뒤 필요할 때 merge하여 반영하는 방식이 더 안전한 선택이 될 수 있다.

 


 

3. Fetch와 Pull의 비교

  행동 Fetch Pull
1 로컬 파일 변경 X (변경 없음) O (자동 병합으로 변경 발생 가능)
2 서버 데이터 가져오기 O (원격 브랜치 정보만 갱신) O (가져오면서 로컬 브랜치에 바로 병합)
3 작업 내용 보존 안전함 (작업 파일 그대로 유지) 병합 시 로컬 변경이 덮일 수 있음
4 충돌 가능성 낮음 높음
5 동작 방식 단순히 원격 저장소의 최신 commit을 로컬 remote-tracking branch로 반영 fetch + merge 과정을 한 번에 수행
6 주 사용 목적 변경 내용 미리 확인용 (비교, 리뷰, 충돌 예측) 로컬 브랜치를 최신 상태로 업데이트
7 실행 후 확인 필요 여부 fetch 후 직접 diffmerge 실행 필요 자동 반영, 별도 조치 필요 없음 (충돌 시 수동 해결)
8 안전성 높음 상황에 따라 낮음 (특히 협업 중 로컬 변경 시)

'Git' 카테고리의 다른 글

[Git] CI/CD  (0) 2026.02.15
[Git] Rebase와 Merge의 차이점  (0) 2025.11.17
[Git] Git Basic  (0) 2025.11.15