이번 강좌에서는 fetch에 대해서 살펴보도록 하겠습니다.

여러 명이 협업을 하다 보면 중간중간 팀원들이 작업했던 내용들을 github에 올릴 것이고 당연히 github의 원격 저장소에 변경된 내용이 발생되겠죠?

여러분들께서 github를 이용해서 작업할 때 반드시 기억해야 할 것은 내가 작업한 코드를 원격 저장소에 올리기 전에 동기화 작업을 해야 한다는 것입니다.

원격지에서 변경된 내용들.. 즉, 내가 원격지에 저장된 프로젝트를 내려받고 작업을 하는 동안 다른 조원들이 작업해서 올린 코드들이 있겠죠? 이 변경된 원격지의 소스코드들을 내 로컬 저장소로 다운로드들 해서 동기화를 해 놓은 후에 내가 작업한 코드를 올려야 합니다.

이 과정이 진행되지 않으면 소스코드들은 엉망이 되어 있을 것입니다. 다른 사람이 기껏 변경한 작업들이 내가 갖고 있던 변경이 전 소스 때문에 작업 이전으로 돌아가 버리면 곤란한 상황이 발생될 것입니다. 그래서 반드시 원격 저장소에 소스코드를 올리기 전에 원격지와 내 소스를 동기화부터 시켜야 합니다.

github 원격 저장소의 소스 코드를 내려받고 내 소스와 병합하는 작업을 pull이라 하는데 github에서는 다운로드하는 작업과 병합하는 작업을 구분해서 하기를 권고하고 있습니다.

바로 github 원격 저장소에 변경된 내용을 내 로컬 저장소로 다운로드하는 것을 fetch라 합니다.

 

 

 

pull을 하면 자동으로 원격 저장소의 파일을 내려받고 이상이 없는 경우 merge까지 자동으로 합니다. 그러나 우리는 따로 작업하기로 했기 때문에 원격지의 정보를 내려받는 작업을 먼저 할 것입니다.

이미 원격지에 readme.md 파일을 작성해서 저장해 놓았기 때문에 원격지에 있는 파일을 내 로컬로 다운로드해서 동일하게 머지까지 해 놓아야 합니다.

"Git Repositories" view에서 리모트의 “origin”을 선택하고 확장하면 두 개의 목록이 표시됩니다. 자세히 보시면 하나는 구름에서 아래 방향 화살표가 있고, 하나는 구름으로 위 방향 화살표가 있는 것을 볼 수 있습니다. 아이콘 참 잘 만들었죠? 구름에서 아래 방향 화살표 있는 것이 원격지에서 로컬로 다운로드하겠다는 의미겠죠? 아이콘 오른쪽 버튼을 눌러 단축메뉴를 나타낸 후 [Configure Fetch]를 선택합니다.

 

 

다음과 같은 대화상자가 나타나면 add 버튼을 누릅니다.

 

[Adding a Refspec for Fetch] 대화상자가 나타나면 [Source]의 텍스트 상자에서 “m”을 입력합니다. 이는 다운로드할 브랜치를 선택하는 과정이며 브랜치란 다시 설명하겠지만 각각이 독립적인 작업을 할 수 있도록 제공되는 작업 공간이라고 생각하면 됩니다. Master 브랜치는 메인 브랜치로 최종 수정이 반영된 프로젝트를 관리하는 브랜치입니다. 아직 우리가 브랜치를 만들지 않았기 때문에 마스터 브랜치만 있습니다.

텍스트 상자에서 "m"을 입력하면 m으로 시작하는 브랜치의 목록이 출력됩니다.

 

 

[Next] 버튼을 누르면 원격지 어떤 브랜치에서 로컬 어디로 이동할 것인지 정보가 표시됩니다. 

 

 

[Finish] 버튼을 누르면 어떤 브랜치의 작업을 리모트로부터 가져올지 정보가 표시됩니다. [Save and Fetch] 버튼을 누릅니다.

 

 

우선 로컬 저장소에 다운로드한 결과 정보가 출력되며 다운로드하는 과정은 STS 상태 표시줄에 진행 상태로 표시됩니다.

 

 

+ Recent posts