본문 바로가기

Git

Git CLI 협업3 (fetch)

보통 저희가 작업을 할때는

git pull -> commit -> push 이런 순으로 진행을 할 것입니다.

이번시간에는 fetch을 통해서 push을 할 수 있고,

git fetch -> git merge FETCH_HEAD -> commit -> push

fetch을 통해서 어떤한 장점이 있는지 살펴보겠습니다.

 

 

 

 

로그를 보시면 초록색 main 이라고 보이시는 것이 저희의 지역저장소의 main 브렌치이고,

빨간색의 origin/main 이라는 것은 저희의 원격저장소 중에 origin이라는 이름의 저장소의 main 브렌치를 가르킵니다.

그리고 이 앞의 노란색 커밋 ID는 마지막으로 메인 브렌치의 어떤 버전을 가져왔는지 의미합니다.

 

 

 

 

그럼 a 디렉토리를 수정해보겠습니다.

 

그리고 커밋도 마치겠습니다.

 

 

그다음 로그를 확인해보면 저희의 현재 브렌치는 main이고 저희의 main 브렌치는 work 3a를 가리키고 있습니다.

그러나 origin/main은 여전히 전 버전을 가리키고 있습니다.

그렇다면 우리의 지역저장소 브렌치가 원격저장소의 브렌치보다 하나의 버전이 앞서 있다라는 것을 보여줍니다.

 

 

그렇담 git의 상태를 묻는다면 우리의 브렌치가 origin/main 브렌치보다 한 버전 앞서있고

그렇기 때문에 push을 해야한다고 뜨고 있습니다.

 

이제 push을 때리고, git log를 살펴본다면

origin/main이 브렌치와 main의 브렌치가 같은 곳에 있는 것을 확인할 수 있습니다.

 

이번에 b라는 컴퓨터에서 작업을 한다면 pull로 우선 당겨와야겠죠?

하지만 이번시간엔 git fetch라는 것으로 당겨와보겠습니다.

git fetch

 

이렇게 당겨왔다면 a에서 마지막으로 작업했던 3a라는 내용이 있어야 할 것 같지만 

오잉?? 어디갔지..? 보시는 것같이 없습니다..

 

그럼 로그를 한번 살펴보겠습니다.

현재 저희의 지역저장소의 위치는 여전히 b의 마지막 버전에 머물러있고,

origin/main 가 main 브렌치보다 한칸 더 앞서 있습니다.

 

그럼 git status는?

저희의 브렌치가 origin/main 보다 하나의 커밋만큼 뒤쳐져있다고 하고 

pull 을 하라고 써져있네요.

그렇다면 두가지 선택지가 생깁니다.

 

1. git pull

2. origin/main을 여러분의 main 브렌치로 merge 

 

git merge origin/main

 

merge를 하시고 log를 보시면 ?

보시는 것처럼 pull을 한 것과 똑같은 모습을 한 것을 볼 수 있습니다.

 

git pull = git fetch : git merge origin/main

 

그렇다면 git fetch를 통해서 무엇을 할 수 있는걸까?

 

내가 어떤 브렌치를 병합할지 신경 쓰는것은 귀찮은 일인데

 git에서는 fetch를 할때마다 .git 디렉토리안에 FETCH_HEAD 라는 파일을 만듭니다.

 

.

 pull은 원격저장소에 가장 최근에 fetch 했던 것을 merge 하는 것이였네요!

이렇게 해서 fetch로 remote 브렌치를 배웠고, remote branch을 지역 branch로 merge하는 것을 배웠고요!

 

그렇다면 언제 쓰는 것 일까요?

여러분들이 신중하게 git의 데이터를 pull 하고 싶을때 결합은 나중에하고 가져오고 싶다면

fetch라는 것을 사용하면 되겠네요!

'Git' 카테고리의 다른 글

Git cherry-pick  (0) 2024.01.31
Git cherry-pick & rebase  (0) 2024.01.31
Git CLI 협업2  (0) 2024.01.31
Git CLI 협업  (1) 2024.01.31
Git CLI merge & conflict 병합  (1) 2024.01.23