PMPV

Github Desktop과 Fork를 이용한 깃 협업 플로우 - (1) 본문

development/Fxxk Git

Github Desktop과 Fork를 이용한 깃 협업 플로우 - (1)

playinys 2018. 8. 9. 16:43
반응형

0.

깃은 어렵습니다.

개인적으로 초반 러닝커브가 굉장히 높은 스킬이라고 생각합니다.

특히 깃의 기본 개념보다는 협업을 위한 워크 플로우를 학습할 때가 난이도가 높습니다.

협업을 위한 깃을 학습하며 느낀 점은, 정말 다양한 방법론이 있습니다. 개발자마다 선호하는 방식이 다르고 이는 비기너의 혼란을 야기합니다. 어떤 플로우를 선택해야할지, 이것과 저것은 어떻게 다른지 구별하기도 힘듭니다.


개인적으로 생각하는 깃을 학습하기 위한 가장 좋은 방법은 선배입니다. 능숙하게 사용하는 선배의 방법론을 그대로 흡수하는 것에는 방법론에 대한 고민이 필요없습니다. 여기에 협업을 위한 제 방법 한 가지를 서술합니다.


저에게도 아직 숙달된 방법이 아니고 이해가 부족한 개념이 중간중간 섞여있기 때문에 설명이 부족한 부분은 댓글로 질문을 달아주시거나 정정을 도와주시면 감사하겠습니다.


포스팅 순서는 (1) commit과 push의 개념을 다시 한 번 짚어보고 (2) 다른 사람의 프로젝트에 간섭할 수 있는 fork의 개념과 활용 (3) Github Desktop을 활용해 깃 플로우를 학습하는 순서로 가겠습니다.


 1. Git commit & push

가장 처음 깃을 학습하시는 분들은 커밋과 푸시는 해보셨을거라 생각합니다. 커밋과 푸시의 차이점은 다음과 같습니다.

개발자는 아톰, 비주얼코드, 이클립스 등의 코드 편집기에서 소스코드를 작성하고, 수정하고, 저장합니다. 아톰에서 코드를 작성한 후 컨트롤 에스를 통해 저장했을 때, 우리의 프로젝트는 다음과 같은 상황입니다.

작업 초반인 우리의 작업 내용은 책상 위에 올려져있는 노트입니다.

아직은 종이 한 장에 모든 내용이 들어가고 필기 순서가 명확하게 보입니다. 하지만 작업 내용이 많아지면 어떻게 될까요?


필기 내용은 많아지고, 사진이나 동영상과 같은 미디어 파일이 추가되었습니다. 기능이 추가되고 점점 더 많은 필기가 들어갑니다. 필기를 조금 더 잘하기 위해 사용한 외부 라이브러리는 내 필기의 어디과 연관된 내용인지 알기가 쉽지 않습니다.

이는 버전관리를 어렵게 합니다. 필기의 초반 내용이 어떤 작업 순서를 거쳐 현재의 내용이 되었는지 알 수가 없기 때문에 구조를 설명하기도 어렵고 남에게 보여주긴 더욱 어렵습니다. 똑똑한 사무직은 어떻게 할까요?


그렇습니다. 우리는 3차 산업 혁명을 넘어 4차 혁명의 시기를 살아가고 있는 세대이기 때문에 더 이상 손과 펜으로만 기록하지 않습니다. 컴퓨터를 활용할 수 있습니다. 책상 위에서 손으로 적으며 정리해둔 내용을, 혹은 계산 결과와 기획을 그때그때 컴퓨터에 올려두면 나중에 컴퓨터에 저장된 내용을 확인할 수 있습니다. 월요일의 저장 내역, 화요일의 저장 내역, 수요일의 저장 내역을 보면 일요일 밤에 내가 이번주는 이런 순서로 일했구나, 라고 생각할 수 있겠습니다. 그리고 다음 헬요일을 대비할 수 있겠죠.


여기에서 컴퓨터에 저장하는 행위에 해당하는 것이 깃의 커밋이라고 할 수 있습니다. 에디터에서 작업한 내용을 깃에 커밋(저장)함으로써 우리의 작업 내역을 기록하는 것이죠. 그렇다면 푸시는 무엇일까요?


우리는 컴퓨터를 혁명의 수단으로 만들어준 최고의 기술, 인터넷을 이용합니다. 우리가 열심히 커밋하고 기록한 우리의 깃 프로젝트는 우리의 컴퓨터 안에서만 존재합니다. 우리의 프로젝트를 네트워크 위에 올려봅시다.


깃허브는 깃의 공유와 협업을 위한 최고의 플랫폼입니다. 아까 사무실에서 필기하던 상황으로 다시 돌아가보면, 우리 팀이 필기하고 작업한 내용을 팀 사무실에서만 보면 활용성이 떨어지겠죠. 일을 했으면 보고를 해야 월급이 들어올테니까요. 우리는 사무실에 있는 컴퓨터를 회사 인트라넷 네트워크에 등록해놔야 다른 부서, 혹은 월급을 주는 사람들이 우리의 작업 내역을 확인할 수 있을겁니다. 집에 가서 이번주 작업 내역을 볼래도 네트워크에 업로드를 해놔야겠죠. 마찬가지로 우리의 깃 프로젝트를 네트워크에 등록하려면 깃허브 안에서 저장공간을 만들어 여기에 업로드를 해줘야 합니다. 여기서 우리 컴퓨터 안에 있는 저장공간을 로컬 레포지토리, 깃허브에 있는 저장 공간을 원격 레포지토리, 로컬 레포 안에 있는 커밋이 쌓인 프로젝트를 원격 레포에 올리는 행위를 푸시라고 합니다.


다음 포스팅부터는 깃 협업 플로우의 초반 개념을 잡아보도록 하겠습니다.


반응형
Comments