Search
⬇️

Fetch & Pull

원격저장소가 동작하는 방식

Remote Tracking Branch

원격에서 브랜치의 가장 마지막 커밋을 가리킴
로컬에서 옮기는 것이 아님.
<remote>/<branch>
Bash
복사
형태로 나타내어짐 예시 : origin/master
origin 원격저장소의 master 브랜치의 가장 최근 커밋을 가리킴.
remote tracking branch 확인 방법 :
git branch -r
Bash
복사

remote branch 의 커밋을 확인해보고 싶다면?

git checkout origin/master
Bash
복사
Detached HEAD 발생
git switch - #복귀
Bash
복사

로컬 브랜치가 리모트 브랜치보다 앞서고 있는 경우 → push

git push origin main
Bash
복사
clone 하게 되면 모든 branch 가 다 clone 되며, 기본 브랜치로 이동된다.
아래와 같은 원격저장소를 클론한다 생각해보자
엥 클론했는데 브랜치가 하나밖에 없다!!
git branch -r
Swift
복사
을 사용하면 로컬 리파지터리가 알고있는 원격 브랜치들을 볼 수 있다
이유는 바로…!
내 워크스페이스의 마스터 브랜치가 origin/master 를 가리키고 있기 때문이다.
따로 연결을 해주어야 한다!
puppies 브랜치를 로컬에서 작업하고 싶다면??
checkout origin/puppies 명령어를 사용하면 되나,
이는 detached HEAD 를 발생시킨다.
원격 브랜치와 대응 되는 로컬 브랜치를 생성해서 연결하고자 한다면?
git switch 원격브랜치명
Swift
복사
하면 된다 쉽다…!

로컬에서 작업을 했지만 해당 브랜치가 원격에서 커밋된 경우는?

Fetch 와 Pull 을 사용하면된다,

Fetching

fetch 는 원격 리파지터리의 변경사항을 다운로드한다.
이러한 변경사항은 자동으로 워킹 스페이스와 통합되지는 않는다.
즉 로컬 repo 와는 머지되지 않는다.
다만,
무엇이 변경되었는지를 알려준다.
Fetch = “무엇이 변경되었는지만 알아오고 내 작업물은 망치지 말라”
git fetch 원격저장소이름
Bash
복사
특정 원격 reop 의 브랜치들과 히스토리를 불러온다.
remote tracking branch 만 업데이트한다
git fetch 원격저장소이름 브랜치이름
Bash
복사
특정 브랜치만 fetch 할 수 있다.
팀원이 마스터 브랜치를 변경해서 push 했지만 내 로컬 리파지터리는 이를 모르고 있는 상황
이렇게 불러온다.
확인하고 싶다면
checkout origin/master 를 하면된다.

Pull

HEAD 브랜치를 업데이트하게 된다.
원격저장소의 변경사항을 현재 워킹디렉토리로 불러온다.
pull = fetch + merge
git pull origin 브랜치이름
Bash
복사
pull 을 위해서는
원격저장소이름
브랜치이름
이 필요하다.
git merge 와 비슷하다고 생각하면 된디.
예를 들어
git pull origin master 라는 명령은
‘origin’ 저장소의 ‘master’ 브랜치의 최신 정보를
로컬저장소의 ‘현재 브랜치’ 에 merge 한다.
pull 은 충돌을 일으킬 수 있다!!

이전 커밋과 merge 된다.

git pull
Bash
복사
원격저장소 이름은 origin
현재 브랜치와 연결된 브랜치를 원격 저장소에서 추적해 댕겨온다.