코규리
article thumbnail

 

Q. 깃(GIT)이랑 깃허브(GitHub)는 같은 거지?
A. 아닙니다. 깃을 이용하여 다루는 저장소가 깃허브입니다.

 

Q. 깃부터 말해줘. Git이 뭐야?

A. 깃은 당신의 파일을 관리해줍니다. 당신의 파일이 언제 만들어졌는지, 언제 수정되었는지, 누가 수정한 건지, 무엇을 수정한 건지를 알고 있습니다. 우리는 수정을 거칠 때마다 ver1, ver2, ver3로 버전변화가 일어날 것이고 깃이 이러한 파일의 변화를 기록하고 있는 겁니다. (즉, 버전관리시스템) 

 

Q. 버전관리 시스템이라고?

A. 네. 우리는 일반적으로 게임 하나를 설치하더라도 그 게임의 출시상태를 유지하는 것이 아니라 여러 번의 업데이트를 시켜줍니다. 이때 git은 마치 타임라인을 가지고 있는 것 처럼 업데이트 1차, 2차, 3차에 대한 버전의 기록을 지니고 있습니다.  

 

Q. 버전관리가 가능하다는 건 무엇이고, 개발에 왜 필요한 거야?

A. 개발 중인 프로그램에는 담겨진 기능이 많습니다. 특히 정적인 것이 아닌 동적인 작업이 많은 것이 많아 수정작업이 수월하지 않습니다. 하나를 고치기 위해 건드려야할 게 많으며, 다수의 작업을 각각 따로 하기엔 겹치는 부분이 너무 많죠. 그러나 git을 사용하면 이 수정시에 겹치는 부분을 추적하여 긴 복붙작업을 생략할 수가 있습니다. 사실 이 깃은 협업작업이 이루어질 때 그 역할이 굉장히 중요해집니다.

 

Q. 협업작업시에 버전관리가 필요한 경우가 뭐가 있길래 깃이 중요해지는 거야?

예를 들어 하나의 프로그램을 여러명이 분담작업을 하고 있습니다. 이때 같은 파일을 건드려야 할 때도 많겠죠.  그런데 수정작업시에 누가 언제 어느 부분을 수정하고 있는지를 알지 못한다면 참사가 날 겁니다. 

a 내가 여기 수정해서 업데이트해놨어
b 응? 나도 거기 이미 고치고 올려놨는데?
a 나 변수 이걸로 싹 엎어놨는데?
b 그거 때문에 뒷부분 구동 안 되잖아. 

대충 이런 식으로 흔히 프로젝트 진행 중에 문제를 겪게됩니다. 특히 깃을 모르는 코딩 팀플 작업중인 학부생의 입장에선 잘 알고있겠죠. 너도 나도 수정한 부분이 있는데 어디를 고친 건지 뭐가 겹치는 건지, 이걸 합치려니 머리아프고.

그러나 깃을 이용하면 서로의 변경사항의 충돌을 막을 수 있습니다. 서로의 수정사항에 대한 기록을 갖고 있으니까요. 이제 이 깃이라는 단위(개념)을 사용하는 github에서 실제 프로그램 분담-합병 작업을 수행하게 됩니다.

 

 

 

Q. github, 말그대로 깃저장소라는 것 같은데 어떤 역할을 하는 곳인 거야?

A. github는 클라우드 웹사이트입니다. 깃에 관한 정보를 이 웹사이트를 통해 공유가 가능해집니다. 로컬저장소(개인pc)에서 작업을 수행한 후 이 내용을 clone-add-commit-push등, 일련의 작업을 거치면 서로의 변화기록을 알 수 있습니다.

또한 브랜치를 나누는 행위를 통하여 작업의 분담과 합병도 수월해집니다.

 

Q. 그럼 클라우드는 github만 있나보네.

A. 아뇨. gitlab, bitbucket도 있으나 github를 많이 씁니다.  특히 이 github는 위에서 말한 버전관리만이 주목적인 게 아닙니다. github에는 수많은 오픈소스가 있습니다. 이 오픈소스를 주고받고 기여하며 교류의 장소로 쓸 수 있습니다. 또한 나의 포트폴리오로 쓸 수 있는 개발의 흔적을 남길 수 있는 좋은 곳입니다. 

 

 

 

 

깃과 깃허브를 배우며 가졌던 생각의 흐름을 대화형식으로 정리해보았습니다.