호댕의 iOS 개발

[Git] git fetch VS git remote update, 이 둘의 차이점은 뭘까? 본문

Software Engineering

[Git] git fetch VS git remote update, 이 둘의 차이점은 뭘까?

호르댕댕댕 2022. 11. 6. 16:51

회사에서 업무를 하면서 git rebase는 이제 어느정도 익숙해졌지만, 아직 Git의 세계는 훨씬 방대한 것 같다... 

아직 제대로 모르는 것들이 많은데 이번에 배포 전략을 수정하면서 git fetch와 git remote update를 사용할 일이 생겼다. 

 

그런데 이 둘의 기능은 비슷한 것 같은데 무슨 차이점이 있는지 궁금해졌다. 

 

그래서 간단하게나마 정리를 해보고자 한다. 

이 외에도 Git에 대해 조금 더 공부를 해야겠다는 생각이 든다. 

 

git remote update

일단 로컬 브랜치에 있는 변경 사항을 리모트 브랜치에도 생성을 하려 한다면 commit -> push의 과정을 하게 된다. 

이는 Git을 써본 사람이라면 누구든 사용해본 기능일 것이다. 

 

여기서 git branch를 사용하면 현재 로컬에 있는 브랜치를 확인할 수 있는데 만약 리모트 브랜치를 확인하고 싶다면 

git branch --remote

를 사용하면 된다. 

 

만약 로컬 / 리모트 브랜치를 전부 확인하고 싶다면 git branch -a 를 사용해 확인하면 된다. 

 

그렇다면 현재 다른 사람이 remote 브랜치를 업데이트 해서 해당 정보를 로컬에 가지고 오고 싶을 때는 어떻게 하면 될까?

 

이때 사용할 수 있는 것이 바로 git remote update이다. 

이를 통해 리모트 브랜치의 변경사항들을 업데이트하고 이를 가져올 수 있게 된다. 

 

하지만 해당 명령어를 사용한다면 로컬 브랜치에 변경사항이 병합되진 않는다. 

만약 리모트 브랜치에 새롭게 추가되거나 삭제된 정보를 최신으로 업데이트 및 반영하려면 

git remote prune origin

명령어를 사용해 변경사항들을 반영해줄 수 있다. 

 

그렇다면 git fetch는 뭘까??

 

git fetch

일단 기능 자체는 git remote update와 유사하다. 

리모트 브랜치에 변경 사항을 업데이트할 수 있도록 가져오는 것이다. 

 

그렇다면 git remote update와 완전 동일한 명령어일까?

 

그건 아니다. git fetch를 사용하게 되면 현재 checkout(switch)를 통해 위치하고 있는 브랜치만 변경 사항을 업데이트 하게 된다. 

 

만약 전체 branch를 업데이트하고 싶다면 git fetch -all을 사용하면 전체를 업데이트할 수 있게 된다. 

이 경우에는 git remote update와 동일하게 동작한다고 이해했다. 

 

그럼 git pull과 git fetch는 뭐가 다를까?

git pull의 경우 git fetch를 하고 git merge까지 이뤄지게 된다

 

Comments