1. Fetch 란?
- 원격 저장소의 최신 커밋 정보를 로컬의
origin/*브랜치에 업데이트한다. - 로컬 브랜치(
main,feature등)는 변경되지 않는다. merge또는pull을 해야 로컬 브랜치에 반영된다.- 안전하게 원격 상태만 확인하고 싶을 때 사용된다.
$ git fetch origin
# 또는
$ git fetch origin <브랜치명>
즉 원격 저장소(Git Hub, Git Lab 등등)의 최신 정보를 받아 오기 전, 충돌없이 내 파일과 미리 비교해볼 수 있는 비교적 안전한 방법이다. 작업 파일이 많거나 중요해도 충돌 걱정없이 최신 정보들과 안전하게 비교해볼 수 있다.
2. Pull 이란?
- 원격 저장소의 최신 커밋을 로컬의
origin/*브랜치에 가져오고, 해당 내용을 현재 로컬 브랜치에 자동으로merge또는rebase한다. - 로컬 브랜치(
main,feature등)가 직접 변경된다. fetch와merge과정을 한 번에 수행하는 명령이다.- 원격 변경 사항을 즉시 로컬 작업 브랜치에 반영하고 싶을 때 사용된다.
$ 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 후 직접 diff 나 merge 실행 필요 |
자동 반영, 별도 조치 필요 없음 (충돌 시 수동 해결) |
| 8 | 안전성 | 높음 | 상황에 따라 낮음 (특히 협업 중 로컬 변경 시) |
'Git' 카테고리의 다른 글
| [Git] CI/CD (0) | 2026.02.15 |
|---|---|
| [Git] Rebase와 Merge의 차이점 (0) | 2025.11.17 |
| [Git] Git Basic (0) | 2025.11.15 |