IT공부

git pull과 git fetch 차이 설명

지식루프 2025. 3. 2. 18:42
728x90
반응형

git pullgit 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 origingit diff main origin/main으로 차이점 확인.
  • git pull:
    • 바로 최신 상태로 동기화하고 싶을 때.
    • 충돌 걱정이 없고 빠르게 업데이트하고 싶을 때.
    • 예: 팀 작업에서 자주 쓰임.

추가 팁

 

  • git pull은 사실 git fetch + git merge를 합친 것.
  • 충돌이 걱정된다면 git fetch로 확인 후 병합하세요.
  • 리베이스 방식으로 끌어오고 싶다면: git pull --rebase.
728x90
반응형