서버(원격) 저장소에서 내려받기
서버 저장소의 내용을 내려받는 방법은 크게 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_clone을 소스트리로 확인해 보겠습니다.
확인한 화면이 다음과 같습니다.
이제 로컬 저장소 remoterepo_clone에서 fetch를 실행합니다.
다음 화면이 $ git fetch를 실행하고 커밋 이력을 확인해 본 결과 입니다.
$ git fetch 실행 후 어떠한 결과 메시지도 출력되지 않음을 알 수 있습니다.
$ git log를 통해 커밋 이력을 확인해 봐도 이전과 달라지지 않았습니다.
이제 병합(merge)을 실행합니다.
서버 저장소의 브랜치를 fetch 받은 후 병합하는 방법은 다음과 같습니다.
# 서버 저장소의 브랜치를 fetch 받은 후 병합
$ git merge <서버 저장소 이름>/<브랜치 이름>
우리가 등록한 <서버 저장소 이름>은 origin이고, 업데이트받은 <브랜치 이름>은 master였습니다.
그래서 $ git merge origin/master라고 실행하면 됩니다.
그 실행 화면이 다음과 같습니다.
Fast-forward 방식으로 병합되었음을 알 수 있습니다.
다음과 같이 로컬 저장소 로그를 확인하면, 업데이트되었음을 알 수 있습니다.
소스트리(Sourcetree)에서 다시 한번 확인해 봐도 마찬가지로 동기화되었음을 알 수 있습니다.
이상과 같이 fetch(패치)에 대해 확인해 봤습니다.
지금까지 서버(원격) 저장소에서 로컬 저장소로 내려받는 방법을 살펴봤습니다.
차근차근 따라서 한번만 해보면 쉽게 이해가 되리라 생각됩니다.
감사합니다.
'코딩해보니 > Git' 카테고리의 다른 글
[Git_49] 원격 브랜치 - 로컬 브랜치 이름과 원격 브랜치 이름을 다르게 설정하기 (0) | 2023.04.27 |
---|---|
[Git_48] 서버(원격) 저장소 - 원격 브랜치의 이해 (0) | 2023.04.25 |
[Git_46] 서버(원격) 저장소에서 내려 받기 - Pull (0) | 2023.04.18 |
[Git_45] 서버(원격) 저장소에서 내려 받기 - Clone (0) | 2023.04.01 |
[Git_44] 서버(원격) 저장소로 전송(push) 할 때 유의할 점 (0) | 2023.03.31 |
댓글