pull
을 실행하면 원격 저장소 내용을 가져와 자동으로 병합한다.
원격 저장소 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우 fetch
를 사용할 수 있다.
clone
을 통해 원격 저장소를 복제한 저장소를 만들 수 있다. 클론해서 작업하는 상황에서 원격 저장소에 변경 사항이 생겼다면 그 내용을 가져와 클론 저장소를 최신 상태로 유지해주어야 한다.
fetch
와 pull
이 이럴 때 등장한다. git fetch
는 로컬 깃에게 원격 저장소의 최신 데이터 정보를 확인하라고 명령한다. 변경사항이 있는지 확인만 하고 변경된 데이터를 실제로 가져오지는 않는다.
git pull
은 원격 저장소에서 변경된 메타데이터 정보를 확인하고 최신 데이터를 복사하여 로컬 깃에 가져온다.
git fetch
를 사용하면 마지막 pull
이후 원격 저장소에 적용된 변경 사항을 확인할 수 있다. 원격 저장소에 변경 사항이 존재하는 상황에서 pull
을 바로 실행하면 현재 브랜치의 파일이 변경되며 작업 내용이 날라갈 수 있다. 따라서 fetch
로 변경 사항을 먼저 확인한 후 pull
을 실행하는 것이 더 안전하다.
pull
은 원격 저장소와 지역 저장소 모두 최신 commi에 위치하게 된다. 즉 지역 저장소에 내용이 반영된다. 반면 fetch
는 지역 저장소와 연결된 원격 저장소는 최신 commit에 위치하게 되지만 지역 저장소에는 변경이 없다. 원격 저장소에서 파일만 다운받고 merge
는 하지 않는다. 따라서 변경사항을 비교할 때 유용하다. 비교 후 git merge origin/main
으로 원격 저장소의 내용을 지역 저장소로 merge
해줄 수 있다.