pull 과 fetch 는 Git 사용자가 자주 사용하는 명령어이다.
일단, 클론 저장소(Clone repository)는 원격 저장소를 복제한 저장소이다. 이는 다른 사람의 소스 코드 복사본을 생성하는 것과 같으며, 개발을 할 때 보통 우리는 클론 저장소에서 작업을 진행하게 된다.
이러한 상황에서 만일 원격 저장소에 변경 사항이 생긴다면, 우리는 클론 저장소를 최신 상태로 만들어 주어야 한다.
여기서 fetch
와 pull
이 등장한다.
git fetch
는 로컬 Git에게 원격 저장소에서 최신 메타데이터 정보를 확인하라는 명령을 전달한다.
단 fetch는 원격 저장소에 변경사항이 있는지 확인만 하고,
변경된 데이터를 로컬 Git에 실제로 가져오지는 않는다.
반면, git pull
은 원격 저장소에서 변경된 메타데이터 정보를 확인할 뿐만 아니라 최신 데이터를 복사하여 로컬 Git에 가져온다.
git fetch
를 사용하면 pull 이후 원격 저장소 또는 브랜치에 적용된 변경 사항을 확인할 수 있다.
만일 원격 저장소에서 변경 사항이 존재하는 상황에서git pull
을 실행하면 현재 브랜치와 작업 복사본 파일이 변경되는 동시에 새로 작업한 내용이 손실될 수 있다.
따라서fetch
로 변경 사항을 확인 한 후pull
을 실행하는 방법이 보다 안전하다.