본문 바로가기
코딩해보니/Git

[Git_47] 서버(원격) 저장소에서 내려 받기 - Fetch

by 위시랜 2023. 4. 20.

서버(원격) 저장소에서 내려 받기 - Fetch
서버(원격) 저장소에서 내려 받기 - Fetch

서버(원격) 저장소에서 내려받기

서버 저장소의 내용을 내려받는 방법은 크게 3가지가 있으며, 그 방법과 차이를 간략히 얘기하면 다음과 같습니다.

  • Clone (클론) - 서버(원격) 저장소의 내용을 전부 그대로 로컬로 복제.
  • Pull (풀) - 로컬 저장소와 다른 사항에 대해서만 내려받아 병합(merge)까지 수행함.
  • Fetch (패치) - 로컬 저장소와 다른 사항에 대해서만 내려받고 병합(merge)은 하지 않음.

■ Fetch

서버 저장소의 내용을 내려받는 또 하나의 방법은 패치(fetch)가 있습니다.

pull과 fetch의 차이점은 자동으로 병합(merge)까지 하느냐/하지 않느냐입니다.

 

pull과 fetch는 실행하게 되면 Git의 임시 공간으로 내려받습니다.

내려받는 것까지는 두 명령어가 동일합니다만, pull은 로컬 저장소와 병합(merge)까지 자동으로 실행합니다.

반면에 fetch는 내려 받기만 하고 병합(merge)은 수동으로 실행해 줘야 합니다.

 

fetch 명령어 사용법은 다음과 같습니다.

# 로컬 저장소와 다른 업데이트된 내용만을 로컬 저장소로 내려 받기(수동 병합)
$ git fetch <서버 저장소 이름>

<서버 저장소 이름>은 생략할 수 있습니다.

<서버 저장소 이름>을 생략하면 등록된 서버 저장소의 모든 변경사항을 가져옵니다.

 

특정 서버 저장소의 내용을 가져오려면 <서버 저장소 이름>을 지정하면 됩니다.

 

fetch(패치)를 확인해 보기 위해

다시 한번 remoterepo 로컬 저장소에서 index.html 파일을 수정하고 커밋, 푸시(push)까지 실행하겠습니다.

그 실행 과정은 다음과 같습니다.

remoterepo 로컬 저장소에서 index.html 파일 수정 후 서버(원격) 저장소로 전송
remoterepo 로컬 저장소에서 index.html 파일 수정 후 서버(원격) 저장소로 전송

이렇게 실행 후 다른 로컬 저장소 remoterepo_clone을 소스트리로 확인해 보겠습니다.

확인한 화면이 다음과 같습니다.

소스트리(Sourcetree)에서 로컬 저장소 remoterepo_clone의 커밋 이력 확인
소스트리(Sourcetree)에서 로컬 저장소 remoterepo_clone의 커밋 이력 확인

이제 로컬 저장소 remoterepo_clone에서 fetch를 실행합니다.

다음 화면이 $ git fetch를 실행하고 커밋 이력을 확인해 본 결과 입니다.

$ git fetch 실행 후 커밋 이력 확인
$ git fetch 실행 후 커밋 이력 확인

$ git fetch 실행 후 어떠한 결과 메시지도 출력되지 않음을 알 수 있습니다.

$ git log를 통해 커밋 이력을 확인해 봐도 이전과 달라지지 않았습니다.

 

이제 병합(merge)을 실행합니다.

서버 저장소의 브랜치를 fetch 받은 후 병합하는 방법은 다음과 같습니다.

# 서버 저장소의 브랜치를 fetch 받은 후 병합
$ git merge <서버 저장소 이름>/<브랜치 이름>

 

우리가 등록한 <서버 저장소 이름>은 origin이고, 업데이트받은 <브랜치 이름>은 master였습니다.

그래서 $ git merge origin/master라고 실행하면 됩니다.

 

그 실행 화면이 다음과 같습니다.

$ git merge origin/master 실행 화면
$ git merge origin/master 실행 화면

Fast-forward 방식으로 병합되었음을 알 수 있습니다.

다음과 같이 로컬 저장소 로그를 확인하면, 업데이트되었음을 알 수 있습니다.

로컬 저장소 remoterepo_clone 커밋 이력 확인
로컬 저장소 remoterepo_clone 커밋 이력 확인

 

소스트리(Sourcetree)에서 다시 한번 확인해 봐도 마찬가지로 동기화되었음을 알 수 있습니다.

소스트리(Sourcetree)에서 로컬 저장소 remoterepo_clone의 커밋 이력 확인
소스트리(Sourcetree)에서 로컬 저장소 remoterepo_clone의 커밋 이력 확인

 

이상과 같이 fetch(패치)에 대해 확인해 봤습니다.

 

지금까지 서버(원격) 저장소에서 로컬 저장소로 내려받는 방법을 살펴봤습니다.

차근차근 따라서 한번만 해보면 쉽게 이해가 되리라 생각됩니다.

 

감사합니다.

 

 

[전자책]Basic Git - 예스24

SVN을 사용할 때도 그랬지만, 버전 관리 시스템을 사용하면서 충분히 알지 못한 상태에서 당장 필요한 기능만을 익혀서 사용하는 경우가 대부분이었습니다. 어떻게 동작하는 지에 대한 이해는

www.yes24.com

 

댓글