Git

[Git] Remote repository의 최신 정보 다운로드 (pull & fetch)

neck392 2024. 11. 3. 00:01

 "git pull"과 "git fetch" 두 명령어 모두 remote repository의 변경 사항들을 local로 가져오지만 동작 방식에 있어서 차이가 있으며 사용하는 용도 또한 다르다.

  • pull : remote repository를 local로 가져와 변경 사항들을 현재 branch에 즉시 merge
  • fetch : remote repository를 local로 가져오지만 적용하지 않고 변경 사항들을 확인, 이후 수동 merge 시 pull과 동일

pull = fetch + merge

 

pull

fetch + merge를 즉시 수행한다. 변경 사항들이 merge를 통하여 local repository에 commit된다. remote에서의 변경 사항들을 현재 branch(checkout된 branch)에 바로 merge하기에 merge하는 과정에서 충돌(conflict)이 발생할 위험이 fetch보다 크다.

git pull

// merge할 branch 명시 예시
git pull origin main

 

fetch

remote를 local로 가져와 확인할 수 있도록 업데이트한다. 작업중인 local branch의 working tree에 변경 사항을 적용하지 않는다. 충돌(conflict)을 대비하여 먼저 수정된 사항(새로운 branch와 commit 이력)들을 확인하기 용이하다. remote의 최신 정보들을 바로 가져와 merge하는 것보다 안전하며 fetch이후에 사용자가 판단하여 merge하거나 rebase등을 사용하여 관리할 수 있다. 

git fetch

// 저장소 이름 명시 예시
git fetch origin

// pull과 같은 동작(fetch + merge) 명령어 예시
git fetch origin
git merge origin/main