요약
fetch를 이용하는 방법
git fetch origin
입력 - origin 원격 저장소로부터 최신 상태를 가져온다.
git merge origin/master
입력 - origin 원격 저장소의 master 브랜치 내용을 합친다.
pull을 이용하는 방법
git pull origin master
입력 - origin 원격 저장소의 master브랜치의 최신 상태를 가져온 후 합친다.
목적
- 협업을 진행 하게되면 로컬 저장소와 연결된 원격 저장소의 상태가 다른경우가 많이 생길 것이다.
- 본인 로컬 저장소와 연결된 원격 저장소의 상태가 다를 경우
git push
를 할 수 없다. 따라서 원격 저장소로부터 내용을 받아오는 방법을 알아보자.
fetch를 이용하는 방법
- 협업을 하거나
git clone
이 아닌 git init
으로 시작하고 원격 저장소와 연결을 하면 로컬과 원격의 상태가 다른경우가 있다.
- 예를 들기 위해 새로운 폴더를 만들고
git init
후 밑의 저장소와 연결을 해 보았다.

- 연결을 했지만 나의 로컬 저장소에는 저 빨간색 부분의 파일이 없다.
- 이 상태에서 본인 로컬 저장소에서 새롭게 작업을 한 뒤에
push
를 하려고 하면 안된다. 따라서 원격 저장소로 부터 내용을 받아와서 나의 로컬 저장소와 합쳐 주어야 한다.
git fetch origin
입력 - origin 원격 저장소로부터 최신 상태를 받아온다.(합치는게 아님!)
weeyosup@Weeui-iMac init3 % git fetch origin
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 18 (delta 4), reused 17 (delta 3), pack-reused 0
Unpacking objects: 100% (18/18), 1.47 KiB | 100.00 KiB/s, done.
From https://github.com/joseph-wee/git-practice
* [new branch] master -> origin/master
- 그러면 위와 같은 메세지가 나올텐데 받아온 최신 상태의 내용이
origin/master
브랜치에 있다는 뜻이다. 그런데 지금 최신 상태를 받아 온 것이지 그 내용을 로컬 저장소와 합친 것이 아니기 때문에 합쳐주어야 한다.
git merge <합치고자 하는 branch이름>
이를 이용하여 합치면 된다.
git merge origin/master
입력 - origin/master 브랜치의 내용을 현재 브랜치로 합친다는 뜻이다.
- 이러면 합쳐진 것이고 폴더를 확인해보면 밑처럼 없던 index.html 파일이 생긴것을 볼 수 있다.
weeyosup@Weeui-iMac init3 % ls
index.html
- 이제 작업을 한 뒤
git push
를 하면 된다. 근데 작업도중 원격 저장소의 내용이 바뀌면 위의 방법을 다시 반복한다.
pull을 이용하는 방법
git pull
은 fetch
+ merge
를 한번에 수행한다고 보면 된다.
- 아까와 같이
git init
후 원격 저장소와 연결을 하고
git pull origin master
입력 - origin의 master브랜치로 부터 최신 상태를 받아온 후 현재 로컬 저장소에서 현재 브랜치와 합친다.
- 그러면 밑처럼 메세지가 나올것이고 확인 해보면 index.html이 생긴것을 볼 수 있다.
weeyosup@Weeui-iMac init4 % git pull origin master
From https://github.com/joseph-wee/git-practice
* branch master -> FETCH_HEAD
weeyosup@Weeui-iMac init4 % ls
index.html // index.html이 있는것을 볼 수 있다.
- 이제 작업을 한 뒤
git push
를 하면 된다. 근데 작업도중 원격 저장소의 내용이 바뀌면 위의 방법을 다시 반복한다.