Fetch와 Pull

onebbu·2023년 9월 8일
0

Git+GitHub

목록 보기
9/12

원격(Remote) 추적 브랜치

저장소 Cloning과 remote(원격)의 작동 방법

어떤 인기 있는 오픈 소스이든 내 컴퓨터에는 아무것도 없음

클론을 하면 깃 저장소와 마스터 브랜치가 생김, 기본 브랜치가 클론했을 때 시작점이 되는 브랜치임(그림에서는 마스터 브랜치)

origin/master는 원격 추적 브랜치 참고라고 함(포인터와 비슷한 역할)

직접 확인하기 위해서는 명령어 git branch -r

깃허브에서 새로운 레포를 만들고 컴퓨터로 클론할 경우 다음과 같이 브랜치와 원격 브랜치를 확인할 수 있음

원격 추적 브랜치 확인하기

마스터 브랜치에 새 커밋을 만들고 브랜치에서 작업을 하면 브랜치 참조는 이동하지만, 원격 브랜치 참조는 이동하지 않음

그러나 이는 깃허브 저장소에서 새 업데이트를 받으면 업데이트됨

원격 추적 브랜치로 작업하기

완전한 브랜치와 원격 추적 브랜치 사이의 관계

기본적으로 저장소를 클론할 때 마스터 브랜치는 자동으로 추적됨

git switch 명령 다음에 아직 로컬에 존재하지 않을 수 있지만, 원격 브랜치에 있는 이름으로 브랜치 이름을 써주면, 깃이 로컬에서 그 브랜치를 만들고, 동일한 이름의 원격 브랜치를 추적하도록 자동으로 설정

브랜치 리스트

movies는 원격 브랜치 리스트에 있어서 전환 가능했지만, 리스트에 없는 브랜치는 전환 불가

Gif Fetch

공동 작업을 할 경우 로컬에서 작업한 것과 깃허브에 올라가 있는 소스 코드가 다를 경우? ⇒ Fetch와 Pull 명령 사용

git Fetch와 Pull의 작업 순서

페치와 풀은 변경사항을 가져오는데 사용

Fetch는 원격 변경 사항들을 가져옴

Pull은 깃허브 저장소에서 항목들을 로컬 저장소로 가져옴(디렉토리X)

페치를 사용하면 원격 저장소에서 변경 사항을 다운로드 할 수 있지만, 이 변경 사항들은 작업 파일과 통합되지 않음, 최신 변경사항을 가져와서 컴퓨터에 접근할 수 있도록 도와주는 역할

최신 정보를 얻을 수 있지만, 변경 사항을 작업 중인 모든 항목에 자동으로 통합하지는 않음.

따라서 페치는 이미지와 같이 로컬 저장소까지는 영향을 미치지 못함

Fetch 사용 방법: git fetch <remote> | 예시: git fetch origin food

Git Pull

fetch vs pull

공통점: 원격 저장소에서 변경 사항을 가져오는데 사용

차이점: pull은 헤드 브랜치를 업데이트 하고, 워킹 디렉토리를 업데이트 하며, 깃허브 또는 다른 원격 저장소에서 가져와서 로컬 저장소와 워킹 디렉토리에 업데이트

git pull = git fetch + git merge

Pull 사용방법: git pull <remote> <branch>

이 구문을 어디서 실행하는지가 중요!! - 어떤 브랜치에 있든, 내가 풀링 다운하는 곳으로 변경 사항은 병합

ex) 마스터 브랜치에 있고, git pull origin master 명령을 실행하면 오리진 마스터의 변경사항을 페치해와서 내가 현재 있는 브랜치에 병합 → 페치 후 병합 순으로 진행

Git Pull 및 Merge 충돌

pull은 충돌을 일으킬 수 있으며, 해결할 수 있음

가끔 깃허브에 없는 로컬 작업을 할 때가 있고, 깃허브에는 로컬에 없는 커밋이 있을 수 있는데 여기서 충돌이 발생함

여기서 인텔리제이나, VS 코드는 충돌을 수정할 수 있는 기능 제공 → 수정 후 커밋하면 처리 완료

Git Pull의 더 짧은 구문

git pull 명령을 사용할 경우 자신의 워크 스페이스에 있는 브랜치에 병합됨

이미지와 같이 master 브랜치의 경우 원격 master 브랜치를 가져와서 병합하고, puppies 브랜치에서 git pull 명령어를 실행할 경우 원격 puppies 브랜치를 가져와서 병합됨.

profile
느리지만 조금씩 발전해가기

0개의 댓글