기타

0. GIT과 GitHub는 왜 쓰나요?

Limm_jk 2020. 7. 1. 22:25

출처 : https://imgs.xkcd.com/comics/git.png

1 : 이게 GIT 이야. 아름다운 분산 그래프 이론의 트리 모델을 통해 프로젝트의 공동 작업을 추적하지.

2 : 짱이다. 근데 그거 어떻게 사용하는거야?

1 : 잘 모르겠는데 이 셸 명령어들을 그냥 외워서 치면 동기화가 돼. 쓰다가 에러가 나면 어딘가에 작업물을 저장한 다음에, 프로젝트를 날려버리고 복사해 둔 걸 다시 다운받으면 돼.

??? 그게 뭔데요;;

 

마지막 스크립트가 맞는 말이면서 굉장히 틀린 말이네요. 저렇게 쓰면 "깃허브교육자료_최종_최종_마지막1_진짜끝(3)"으로 하는 것과 크게 다를 바가 없겠죠? 왜 GIT은 IT분야의 필수 불가결한 존재일까요? 여러 방향으로 필요성을 알아봅시다.

 

1. GIT이 뭔가요??

우선 정의를 한번 볼게요.

위키 백과 : Git==분산 버전 관리 시스템

?? 더 모르겠는데요? 저도 저렇게 접하니 낯서네요.

 

해석하기 쉽게 분산 / 버전관리 / 시스템 으로 나누어봅시다.

 

버전 관리(Version Control) : 변화나 변경을 저장하고 관리하는 것

 

분산(Distributed) : 분산하여 이용함(여기저기서 이용함)

 

=> 분산 버전 관리 시스템 : 여기저기서 변화와 변경을 저장하고 관리해주는 시스템!

 

2. Git Hub는 뭔가요??

위에서 설명한 GIT을 원격으로 이용하기위한 일종의 Tool이에요. 

네이버 클라우드 / 구글 드라이브 등등 한번씩은 써보셨을 것 같은데, GIT을 위한 드라이브라고 생각하시면 편할 것 같습니다.

 

3. 왜 GIT인가요??

여러분은 팀플을 진행하며 위에서 이야기 했던 

깃허브 교육자료
깃허브 교육자료_최종
깃허브 교육자료_최종_최종
깃허브 교육자료_최종_최종_진짜끝
깃허브 교육자료_최종_최종_진짜끝_진짜진짜끝
깃허브 교육자료_최종_최종_진짜끝_진짜진짜끝_집에보내줘
깃허브 교육자료_최종_최종_진짜끝_진짜진짜끝_집에보내줘_교수님용

이런 어마어마한 상황을 우스갯 글이라도 본적이 있으리라 생각이 됩니다. 제가 저렇게 최종보고서를 쓴게 작년이거든요...ㅎ...

 

이렇게라도 해서 정상적으로 마칠 수 있다면 상관이 없겠지만... 문제가 많겠죠..?

 

  1. 그래서 여러분은 이 7개의 파일이 어떤 차이점이 있는 지 알 수 있나요? 최종이 붙었다는 것은 변화가 있어야 조금 있었을 텐데 그런 것을 잡아낼 수 있을까요?? 당연히 어려우리라 생각됩니다. 물론 몇천줄의 코드에서 찾아내는 것은 사막에서 바늘 찾기, 하늘에서 별따기겠죠.
  2. 또한, 여기에서 무엇이 최종일지 모두가 알 수 있을까요?? 예를 들어서 "교수님용"이 최종이지만, 준규는 "깃허브 교육자료_최종_최종_진짜끝_진짜진짜끝"을 들고 '아 진짜 진짜 마지막 정도면 진짜 최종본이겠지?!' 라는 생각으로 두개나 이전버전으로 수정을 진행하고 있을 수 있습니다. 머리가 아파오기 시작하네요;;
  3. 진욱이는 "교수님용" 버전에서 "와 이정도면 충분하다!"라고 생각해서 끝냈는데, 2번과 같은 상황이 일어나서 "조금만 수정했어 ㅎㅎ!"하고 "진짜진짜끝" 버전에서 최신버전으로 점프해버립니다. 그러면 마지막 두개의 변경사항은 반영이 되지 않겠죠. 이거를 발표하다가 발견하면..?

이런 듣기만 해도 머리아픈 상황들을 한 큐에 정리해주는 Tool이 GIT입니다. 

출처 : 우아한 형제들 기술 블로그

위의 그래프는 GIT의 WorkFlow를 도식화한 그림입니다. 맨 위의 파란색이 Main이고 아래로 나눠진 것은 개인의 수정본이죠. Main파일을 유지하며 수정본을 모두가 알 수 있게 관리해 나갑니다. 왼쪽에서 오른쪽의 흐름으로 진행하며, 흐름대로 보면 맨 오른쪽 최신인 것 또한 누구나 알 수 있는 사실이구요. 

 

4. 그럼 왜 하필 Git Hub인가요?

시장의 선점이라고 개인적으로 생각한다. 현재는 BitBucket이나 GitLab, SVN등 많은 원격 저장소 관리 툴이 있지만, 당시에는 화려하게 시각화를 해주고, 무료이며, 제약조건이 없는 Tool은 없었다고 한다. 그래서 Git Hub는 OpenSource의 성지로 떠올랐으며, 많은 개발자들이 다른 Tool들에서 이주해갔다. 위에 나열한 더 좋은 Tool들이 Git Hub의 점유율을 이기지 못하는 이유가 이 방대한 Open Source들에 있다고 할 수 있다. 중요한 이야기는 아니니 여기까지.

옥토캣이 귀여워서라는 의견을 내는 사람 또한 있었다...

 

깃허브의 마스코트인 옥토캣. 보다보니 귀여운 것 같기도..?

이 깃허브는 협업에도 많은 도움을 주지만, 우리 개발자들의 포트폴리오가 되기도 한다. 협업을 통해 프로젝트를 완수하면, 원격 저장소에 기록이 남고, 그 기록은 프로젝트 내용과 개발 습관부터 협업 여부, 내가 무슨 일을 했는 지 까지 버전을 모두 저장하며 보여주는 숨길 수 없는 기록이기 때문이다. 프로필에 언제 몇개의 커밋(업로드)을 했는 지 또한 볼 수 있기에, 성실함과 열정을 증명하는 척도가 될 수도 있다. 잔디를 가꾼다고 부른다.

잔디를 잘 키운 편은 아니라 부끄럽네요

5. 마무리

깃은 협업툴이며 유용하게 버전관리가 가능하다. 깃허브는 원격 저장소이며, 하나의 포트폴리오가 되기도 한다.

이정도만 알아가도 좋을 것 같습니다.

 

리눅스와 GIT의 창시자인 리누스 토르발스는 이런 말을 했습니다.

Talk is Cheap. Show me the Code!

유명한 굉장한 독설가라 해석은 많지만, '이러한 협업 툴들을 잘 사용하면 많은 말을 줄이고 코드로 해결 할 수 있다'고도 해석할 수 있지 않을까 생각합니다. 이제 GIT부터 Git Hub까지 실습으로 다루어보겠습니다. 함께 할 수 있으면 좋겠네요.

 

잘못된 내용이 있다면 덧글로 지적해주시면 수정 바로 하겠습니다~!

감사합니다.