
"원격과 로컬의 코드 상태를 맞추기 위해 pull을 받았는데 왜 히스토리에는 merge했다는 이력이 남은 거지?"
라는 물음에서 시작된 pull과 merge에 대한 글입니다.
저의 의도와 동일하게 원격 저장소에 있는 최신 코드를 나의 로컬에 동기화시키는 것입니다.
사실 Pull은 2개의 명령이 합쳐진 형태였습니다.
fetch: 원격 저장소의 변경 사항을 가져오나, 로컬에 반영하지 않고 따로 저장
git fetch origin
을 수행하면 fetch라는 임시 브랜치가 자동으로 생성됩니다.
실제 병합 전 히스토리를 먼저 확인한 후에 병합 방식을 선택할 수 있습니다.
merge: 원격 저장소의 변경 사항을 가져와 로컬에 병합
두 개의 브랜치를 병합하는 것입니다.
병합은 로컬에서만 수행되며, 현재 체크아웃된 브랜치를 지정한 다른 브랜치(또는 커밋)와 병합하는 역할입니다.
pull: 원격의 상태를 로컬에 가져와 자동으로 병합merge: 로컬에서 2개의 브랜치를 수동으로 병합