내 잡다한 노트

Git fetch와 pull의 차이 본문

Git

Git fetch와 pull의 차이

peanutwalnut 2024. 11. 25. 18:05

git fetch와 git pull은 둘 다 원격 저장소(Remote Repository)의 변경 사항을 가져오는 명령어이지만, 동작 방식과 목적이 다릅니다.

 

1. 기능 요약

git fetch

  • 원격 저장소의 변경 사항을 로컬 저장소에 가져오기만 합니다.
  • 로컬 브랜치에는 영향을 주지 않습니다.
  • 예: 원격 브랜치와 로컬 브랜치 간의 변경 내역을 확인하거나 병합하기 전에 사용.

git pull

  • 원격 저장소의 변경 사항을 가져오고, 로컬 브랜치에 병합까지 수행합니다.
  • 사실상 git fetch + git merge를 한 번에 실행하는 명령어입니다.

 

2. 작업 흐름 차이

git fetch

  1. 원격 브랜치의 변경 사항을 가져옵니다.
  2. 원격 브랜치(origin/branch-name)에 반영됩니다.
  3. 로컬 브랜치는 그대로 유지되며, 병합 여부는 사용자가 결정합니다.

git pull

  1. 원격 브랜치의 변경 사항을 가져옵니다.
  2. 가져온 변경 사항을 로컬 브랜치에 자동으로 병합합니다.

 

3. 사용 예시

(1) git fetch

  • 원격 저장소에서 변경 사항을 가져옵니다:
     
    git fetch origin
     
  • 이후, 원격 브랜치와 로컬 브랜치 간의 차이를 확인:
     
    git log origin/main..main
     
  • 필요하면 병합:
     
    git merge origin/main

(2) git pull

  • 원격 저장소의 변경 사항을 가져오고 병합:
     
    git pull origin main
     
  • 기본적으로 현재 체크아웃된 로컬 브랜치와 대응되는 원격 브랜치가 병합됩니다.

 

5. 어떤 상황에서 사용해야 할까?

git fetch를 사용하는 경우:

  • 원격 저장소의 변경 사항을 가져오되, 로컬 브랜치에 영향을 주지 않으려는 경우.
  • 병합 전에 변경 사항을 확인하고 싶을 때:
     
    git fetch origin git diff origin/main

git pull을 사용하는 경우:

  • 항상 원격 저장소의 최신 상태로 작업해야 할 때.
  • 병합 자동화를 선호하는 경우.

 

git pull을 사용하게 되면 원하지 않는 변경 사항이 로컬 브랜치에 바로 적용될 수 있다. 주의해야한다.

그래서 현업에서는 주로 git fetch → 변경 사항 확인 → 필요시 병합 방식이 권장됩니다.

'Git' 카테고리의 다른 글

Git 브랜치 관리 전략  (0) 2024.11.25
Git Flow 전략  (0) 2024.11.25
Git switch와 checkout의 차이  (0) 2024.11.25
Git 자주 쓰이는 명령어 정리  (0) 2024.11.25
Git을 현업에서 사용할 때 보통 어떤 식으로 이루어질까?  (0) 2024.11.25