Git CLI - 협업 - 2 - 원격 브랜치와 fetch

HAN·2021년 5월 15일
0

Git CLI - 협업

목록 보기
2/2

생활코딩 GIT CLI 협업 강의를 듣고 작성했습니다.

fetch?

fetch란 원격저장소에 내 변경사항을 반영한 버전을 생성하고, 이를 다시 로컬저장소로 가져오는 것을 말한다.

push와의 차이점

사실 fetch는 pull 보다 push와 헷갈렸다. push도 내 변경사항을 반영하는 것 아닌가? 싶었다. 하지만 잘 생각해보면 아래의 모델로 이해하는 게 정확해보인다.

push : 로컬 -> 원격
fetch: 원격 -> 로컬

fetch가 내 변경사항을 먼저 원격저장소와 동기화 하는 이유는 그래야 원격 -> 로컬을 할 수 있기 때문이다. 어찌보면 fetch가 push를 자동으로 포함하는 거라고도 생각할 수 있다.

pull과의 차이점

로컬 저장소에 동기화를 하느냐. 즉 원격저장소에 있는 새 버전을 내 로컬저장소에서도 생성하는지의 여부가 차이점이다.

fetch는 원격저장소에서 새 버전을 생성하고, 로컬저장소에는 가져오기만 한다.)
(원격저장소의 새로운 버전을 임의의 브런치를 생성하여 가져올 뿐이다.)

pull은 원격저장소에서 새 버전을 생성하고, 로컬저장소에도 새 버전을 생성한다.
(즉 동기화 한다.)

pull은 fetch를 한 뒤 merge한 것과 같다.

git pull <repository_URL> = git fetch <repository_URL> + git merge <repository_name> <repository_branch>

<repository_branch> 같은 경우 FETCH_HEAD라는 명령어로 대체할 수 있다.
이는 방금 fetch가 일어난 원격저장소의 브랜치를 기억하고 있는 명령어이다.

remote branch?

  • 로컬 브랜치 : master는 내 로컬저장소의 master 브랜치를 가리킨다.
  • 리모트 브랜치 : origin/master 는 origin 이라는 이름을 갖는 원격저장소의 master 브랜치를 가리킨다.
  • 리모트 브랜치는 원격저장소를 클론해올 때 로컬저장소 에 생성된다.

표시는 아래와 같이 원격저장소이름/원격저장소브랜치 로 작명된다. ex) origin/master

profile
즐거운 배움이 되길

0개의 댓글