CI\CD/Git Remote

[Git Remote] git fetch사용해 remote repository(GitHub, GitLab, etc) 트래킹하기

git fetch란?

Git은 Remote Branch를 계속 Tracking 하지 않는다. 사용자가 요청할 때만 트래킹을 한다. 사용자가 이러한 트래킹을 요청하는 명령어가 바로 git fetch 이다.

 

어떤 때 git fetch를 써야 할까?

그림1. git fetch1

 master branch에 first commit과 second commit이 있는 상태에서 해당 브랜치를 git clone 했다고 해보자. 그러면 [그림1]과 같이 Remote Repository인 GitHub의 master 브랜치는 second commit을 포인팅 할 것이고, Local의 master 브랜치 또한 second commit을 포인팅 할 것이다. 그리고 해당 브랜치가 트래킹하는 origin/master은 마찬가지로 second commit을 트래킹 할 것이다. 

 

 

그림2. git fetch2

 그 후 만약 협업하는 사람이 GitHub에 third commit과 fourth commit을 push 했고, Local 브랜치에는 나에 의해 new commit이 생겨났다고 해보자. 그러면 [그림2]처럼 GitHub의 master branch는 fourth commit을 포인팅 할 것이고, Local의 master은 new commit을 포인팅 할 것이다. 하지만 문제는 Local의 origin/master이다. 이 브랜치는 자동으로 업데이트 되지 않기 때문에 여전히 second commit을 바라보고 있다.

 

 하지만, 위와 같이 하면 우리가 만든  new commit을 push하려고 할 때 어떤 문제가 생길지 알 수 없다. 이때 git fetch를 쓰면 [그림3]과 같이 Local의 origin/master가 Remote의 master branch를 tracking 하도록 업데이트 된다.

 

그림3. git fetch3

 

이때 origin/master은 내가 작업하고 있는 Local의 master 브랜치까지는 내려오지 않는다. 

 

 

git fetch를 하는 다양한 방법

git fetch와 git fetch [alias] 사용해 모든 브랜치 최신 remote 커밋 트래킹하기

git fetch나 git fetch origin을 하면 remote 브랜치들이 모두 업데이트 된다. 예를 들어 git fetch origin을 하면 origin에 해당하는 remote git repository에 맞춰 origin/을 접두어로 갖는 브랜치들이 모두 업데이트 된다. 

git fetch
git fetch [alias]

 

git fetch [alias] [branch]를 사용해 개별 브랜치 최신 remote 커밋 트래킹하기

모든 브랜치를 트래킹하도록 하는 git fetch와 달리, git fetch [alias] [branch]는 개별 브랜치를 트래킹 할 수 있게 한다.

git fetch [alias] [branch]

 

예를 들어 master branch만 트래킹 하고 싶다면 git fetch origin master 과 같이 사용하면 된다.

반응형

 

이 글의 저작권은 Dev World 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com