github (혹은 gitlab)를 쓸 때, 원격에 반영된 내용을 로컬로 가져와야 할 때가 있어요. 이 때 fetch를 쓰고, pull을 쓰면 됩니다. 원래 8월 1일에 올리려고 했던 것을 1달이 지나서야 올리는 클라스. 제가 진행하고 있는 토이프로젝트를 가지고 실습해 보겠습니다.

 


 원래 제 토이 프로젝트는 main branch만 있었는데요. 프로젝트가 조금씩 커지다 보니, branch를 나눠야 할 필요가 생겼어요. 그래서, dev1, dev2 등으로 나눠서 관리를 하게 되었어요.

 

 그래서, 제 프로젝트 레포에 dev 브랜치를 하나 추가하였어요.

 

 

 Active branch를 보면 위와 같아요.

 

 

 원격 서버에는, dev 브랜치에, SecurityConfig에 어떤 일을 해야 할 지 적어놓았어요. 사실 dev 브랜치에서 작업하려고 그렇게 설정을 해 놓은 것도 있어요.

 

 

 그런데 original에는 반영되지는 않았어요. 원격에 반영된 내용을 로컬로 어떻게 가져올 것인가? Fetch를 할 겁니다.

 


 Fetch. 어떤 것일까요? 레포로부터 Object랑 ref를 받아오기만 합니다.

 

 눌러 봅시다. 그러면 인증을 하라는 메세지가 나오고 인증을 하면, 인텔리 제이 git console에 아래와 같은 내용이 뜨게 됩니다.

 

 Remote에는 dev와 main 브랜치가 있다는 것이 보이네요. dev를 보니까 todo list 추가 메세지가 보입니다.

 

 

 반면에, main은 그러한 내용이 반영되지는 않았고, swagger auth ui 및 jwt filter 추가까지만 들어가 있어요. origin/dev를 기억해 둡시다. 이는 pull을 할 때 쓰입니다. 쉽게 요약하면, 메타 데이터만 받아옵니다.

 


 이제 Pull을 해 보겠습니다.

 

 git bash에 git을 쳐 보시면 pull에 대한 설명이 나오는데요. fetch and integrate라고 나와 있어요. 패치를 하고 통합한다. 정도로 보시면 되는데요.

 

 

 저는 origin/dev에서 받아올 것이기 때문에, 위와 같이 선택해 준 다음에 pull을 눌러 줍니다.

 

 

 그러면, 제가 remote에 반영했던 주석들이 제 로컬 머신의 SecurityConfig.java에 반영되었음을 알 수 있어요. 정리하면, Fetch는 변경된 정보에 대한 메타 데이터만을 불러오고, Pull은 Fetch를 하면서, remote의 변경 사항을 local에 반영시키게 됩니다.