[Git] fetch vs. pull

fetch

  • 리모트 레포지토리에서 변경사항을 로컬의 remote-tracking branch로 가져오는 작업
    • remote-tracking branch: 원격 브랜치의 최신 상태를 로컬에 기록해두는 읽기 전용 브랜치
  • git diff main origin/main 명령어로 로컬 브랜치와 원격 브랜치 간 차이 확인 가능
  • merge를 통해 현재 로컬 브랜치의 최신 커밋 기준으로 변경사항 반영
  • 로컬 브랜치에서 커밋되지 않은 변경사항이 있는 경우
    • 충돌 없음
      • 브랜치가 병합되고 변경사항 유지
    • 충돌 발생
      • 커밋 후 merge를 통해 충돌 해결
      • stash를 활용하여 변경사항 임시 저장 후 merge후 변경사항 적용
  • 변경 사항을 확인하고 merge하고 싶은 경우에 사용

pull

  • fetch + merge(or rebase)
  • remote-tracking branch의 변경사항을 즉시 로컬 브랜치에 반영
  • 변경사항을 신뢰할 수 있고 즉시 통합하고자 할 때 사용

Categories:

Updated:

Leave a comment