728x90
반응형
git pull과 git fetch는 Git에서 원격 저장소(remote repository)의 데이터를 로컬로 가져오는 명령어지만, 동작 방식과 결과가 다릅니다. 차이를 쉽게 정리해서 설명해드릴게요.
핵심 차이
- git fetch: 원격 저장소의 데이터를 가져오기만 하고, 로컬 브랜치에는 적용하지 않음.
- git pull: 원격 저장소의 데이터를 가져오고(fetch) 바로 로컬 브랜치에 병합(merge)까지 함.
자세한 차이
특징 | git fetch | git pull |
동작 | 원격 저장소의 최신 데이터를 로컬로 다운로드. | 원격 데이터를 가져오고, 로컬 브랜치에 병합까지. |
영향 | 로컬 브랜치(예: main)는 그대로 유지. | 로컬 브랜치가 원격 브랜치와 동기화됨. |
결과물 | origin/브랜치명(예: origin/main)만 업데이트. | 로컬 브랜치(예: main)가 업데이트됨. |
수동 작업 필요 여부 | 병합하려면 별도로 git merge 실행 필요. | 자동으로 병합까지 처리(추가 작업 없음). |
안전성 | 변경 전 원격 상태를 확인할 수 있어 안전. | 바로 병합하므로 충돌 발생 가능성 있음. |
비유로 이해하기
- 상황: 친구가 클라우드에 파일을 업데이트했다고 해볼게요.
- git fetch: 친구의 파일을 내 책상에 내려놓기만 함. 내 노트는 그대로.
- git pull: 친구의 파일을 가져와서 내 노트에 바로 붙여넣기까지 함.
예시
초기 상태:
- 원격 origin/main: 커밋 A → B
- 로컬 main: 커밋 A
1. git fetch origin 실행:
- 결과:
- origin/main: A → B (업데이트됨)
- 로컬 main: A (그대로)
- 확인: git log main..origin/main → B 커밋 보임.
- 병합하려면: git merge origin/main 따로 실행.
2. git pull origin main 실행:
- 결과:
- origin/main: A → B
- 로컬 main: A → B (바로 병합됨)
- 한 번에 동기화 완료.
언제 쓰나요?
- git fetch:
- 원격 저장소의 변경 사항을 먼저 확인하고 싶을 때.
- 로컬 작업과 원격 작업을 비교하거나, 병합 전에 조정하고 싶을 때.
- 예: git fetch origin 후 git diff main origin/main으로 차이점 확인.
- git pull:
- 바로 최신 상태로 동기화하고 싶을 때.
- 충돌 걱정이 없고 빠르게 업데이트하고 싶을 때.
- 예: 팀 작업에서 자주 쓰임.
추가 팁
- git pull은 사실 git fetch + git merge를 합친 것.
- 충돌이 걱정된다면 git fetch로 확인 후 병합하세요.
- 리베이스 방식으로 끌어오고 싶다면: git pull --rebase.
728x90
반응형
'IT공부' 카테고리의 다른 글
[지식루프의 IT공부] git add -A 와 git add . 의 차이점 (0) | 2025.03.04 |
---|---|
[지식루프의 IT공부] Git의 일반적인 흐름 (0) | 2025.03.03 |
git fetch origin 뜻 (0) | 2025.03.02 |
$ git pull fatal: Not possible to fast-forward, aborting. 해결방법 (0) | 2025.03.02 |
Figma 단축키 (0) | 2025.02.13 |