[Git/Github] Git? 깃? 옷깃?

 

프로그래밍을 쪼끔이라도 하게되면 요새는 무조건 알게되는 Git 이란 녀석.

근데 일반적으로 코딩을 하다보면 저 존재 없이도 잘만 코딩하는데, 왜 꼭 어디선가 나타나서 더 배울것을 던져주는 것만 같은 기분이 들게 하는가.

사실 그냥 나홀로 코딩할때는 로컬에만 잘 분류해서 저장해주면 끝 아닌가?

 

그런게 아니니까 깃이 나왔겠죠?

 

오늘은 Git이라는 녀석이 무엇이고 왜 써야 하는지 그리고 기본적으로 어떤 흐름으로 작동하는지 알아보도록 하겠습니다.

 

Git이란?

Git(깃)이란 나무위키 曰 "깃은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다."라고 합니다.

분명 한글을 읽고 있기는 한데, 도대체 이해가 어려운 것 같습니다.

특히 '분산 버전 관리 시스템'이 압박이죠.

이걸 한마디로 정리해보자면, 내 코드의 변경사항을 기록해주고, 다른 사람들의 변경사항도 기록해주는데, 백업도 해주는 것입니다. 말그대로 열심히 기록해주는 시스템입니다. 말 그대로 게임에서의 세이브/로드 기능+'실행취소'와 같은 백업기능이죠.

 

막간으로 Git이랑 Github는 무엇이 다를까요?
git은 버전관리 툴이지만, github는 클라우드 서비스입니다.
git으로 버전관리를 한 것을 누구나 볼 수 있게, 혹은 쉽게 접근이 가능하게 하여 이 버전관리를 활용할 수 있게 해주는 것이지요.

 

그러면 깃을 왜 사용해야 하나?

왜 사용해야 하냐면! 그것은! 팀이나 조별과제시에 발표자료 혹은 교수님 제출자료의 제목을 한번 생각해보시면 한방에 이해가 됩니다.

발표자료_초안.ppt
발표자료_초안(수정).ppt
발표자료_초안(수정)(2차수정).ppt
.
.
.
발표자료_초안(수정)(2차수정)_최종본.ppt
발표자료_최종본_진짜 최종수정.ppt
발표자료_최종본_final.ppt
발표자료_교수님 첨부용.ppt
[1조]발표자료 ppt의 제목 변천에 관하여.ppt

네. 비단 제목 뿐만이 아니라, 중간에 누락되고, 나중에 오프라인으로 만나서 조장이 최종본을 열면 '어? 이거 제가 수정했는데 못보셨어요?'가 반드시 나오죠.

몬가.. 몬가 멋있고 엘레강스하며 팬시한 관리 방법이 있어야 할 것 같은 의무감 같은 것이 생기지 않습니까?

 

왜 저렇게 파일 길이가 계속 늘어나면서 뭔가가 덕지덕지 붙는걸까요?

바로 여러명이서 동시에 작업하기 때문입니다.

여러명이서 작업하며 내 파일도 내 컴퓨터에 백업으로 저장하면서 이메일로 주고받고 한명이 합치면 다음 사람에게 합친걸 넘겨주고... 그러면서 당연히 누락도 생기고 파일명도 다른 파일들과 구분하기 위해 저렇게 길어지는 것이죠.

그렇다면

만약에 팀 안에서 알아서 기록해주고 알아서 백업을 챙겨주는 사람이 있다면 팀원간에 이메일로 왔다갔다 하며 누락시키거나 파일명이 저렇게 길어질 필요가 있을까요?

한명이 전담해서(서기) 모든 자료를 받고, 취합하고, 수정사항이 있으면 그것만 보내면 알아서 백업 이후에 새 파일로 만들어서 누구나 볼 수 있게 해준다면?

그 한사람이 바로 깃(Git)입니다.

단순한 파일 하나만 왔다갔다 하는 것도 이런데, 그 수많은 라인의 코드파일들이 이리저리 왔다갔다한다면...?

꼭 써야 합니다 여러분.

 

깃은 그럼 어떻게 쓰는거야?

단순합니다.

0) [git config]

    git config --global user.email "---@--.--"
    git config --global user.name "---"

1) [git init]
    처음에 깃한테 어떤 폴더를 보라고 시킵니다. '야 여기 좀 보고 앞으로 이 폴더에서 일어나는거 싹다 기록해놔.'
    서기를 정하고 서기한테 '이제 우리가 너한테 모든 파일을 다 보낼거야'라고 합니다.

2) 열심히 그 폴더 안에서 지지고 볶습니다. 새 폴더도 만들고 코딩한 파일도 만들고 하면서요.
    서기한테 보내기 전 내 컴퓨터에서 열심히 작업을 하는 것과 같습니다.

3) [git status]
    그리고 깃한테 한번 쓱 물어봅니다. '잘 기록했니?' (물론 굳이 안물어봐도 됩니다. 알아서 잘 하니까요? 그치만... 궁금하잖아요?) 그러면 컴퓨터인 깃은 싹다 기록을 해놨다고 얘기를 하죠.
    서기도 마찬가지 일 겁니다.

4) [git add]
    그렇다면 그 변경사항 중 변경이 저장되길 원하는 것만 선택합니다. 이 순간부터 단순히 컴퓨터에 저장된 것이 아닌 내부적으로 '스테이지'라고 불리는 곳에 따로 입력해둡니다.
    서기의 컴퓨터에게 보내기위해 메일에 따로 업로드를 합니다.

5) [git commit [파일명] -m "뭐라뭐라"]
    그리고 현재 서기한테 던져준 파일들을 한 뭉텅이로 만들고 이 뭉텡이가 뭔지 설명을 적어줍니다. 서기 컴퓨터에 저장할 내용입니다. 여기까지 하면 서기가 서기 컴퓨터에 파일을 영구히 저장했습니다. 이것을 '레포'라고 부릅니다.

6) 깃헙이라는 클라우드 서비스에 프로젝트 저장소를 만듭니다. 가령 서기가 단톡방 혹은 옵톡을 파는 것과 같습니다.

7) [git remote add]
    컴퓨터에게 깃헙 주소를 알려줍니다. 사람들에게 옵톡 주소를 알려주는 것과 같습니다. 딱 한번만 알려주면, 다른 사람들이 방에 주소 없이 들어올 수 있듯 깃헙에도 한번만 해주면 따로 이 과정없이 바로 올릴 수 있습니다.

8) [git push]
    그리고 마지막으로 깃헙에 올리면 끝납니다.
    서기도 단톡방에 파일을 올려서 모든 팀원들이 볼 수 있게 하였습니다.

+ Recent posts