GIT 알아가기

 아래내용은 git-scm.com 의 메인페이지에 있는 글이다.
 짧게 말하면 버전 컨트롤 시스템, 우리말로 표현하자면 형상관리 시스템이라고 한다

    Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

  • 형상관리 시스템은 어떻게 사용될까

형상관리 개념을 모르던 시절, 대학시절 졸업 프로젝트를 할때가 생각난다. 

매주 산출물에 대한 결과를 교수님께 발표를 해야할때면 같이 프로젝트 하던 친구와 메신저로 업데이트한 소스를 주고받아서 합친 후 잘 구동되면 새로운 폴더에 날짜이름을 붙여 매번 저장했었다. 해당 폴더에 텍스트 파일을 만들어 업데이트 된 내용들을 적어놓곤 했다.

그리고 업데이트된 프로젝트파일을 압축해서 함께 프로젝트 하던 친구에게 다시 배포하였다.


졸업 후 회사에 입사하여 현업에 배치되면서 가장 먼저 익힌게 GIT이다.

이 중요한 걸 학교에서는 많이 안 가르쳐 주는 것 같다.


GIT 과 같은 형상관리 시스템을 사용하면 위와 같은 과정을 굉장히 세련(?)되고 스마트하게 처리할 수 가 있다. 지금은 나름 git에 능숙한 user로 학창시절을 생각하면 이불킥을 떠올리게끔 한다.


위의 내 흑역사를 통해 git으로 어떤일을 할 수 있는지 알아보자.


1. 프로젝트 인원 각자가 작업을 하여 업데이트 한다.

 >> git에는 변경된 것들을 일일히 추적하고 있는데 변경점 단위를 나타내주는 commit을 생성할 수있다. commit에는 자유롭게 메세지를 남길수 있다. 메세지에는 무엇을 변경했는지, 왜 변경했는지 등을 표현하는게 적절하다. 또한 생성된 commit은 협업을 위해 git server에 업데이트하여 다른 사람이 받아갈 수 있게끔 한다. (add, commit, push)


2. 친구와 메신저를 통해 업데이트 된 소스를 주고 받았다

  >> github나 bitbucket 또는 다른 opensource 의 git 관리 시스템을 이용해서 git 서버에 있는 업데이트 된 소스를 다운 받을 수 있다. (clone, pull, fetch)


3. 새로운 폴더에 날짜 이름을 붙여 매번 저장했다

 >> 특정 변경 이력을 기준으로 책갈피 처럼 TAG를 붙일 수 있다. 또는 Branch라는 개념을 통해 추가적인 복사본 없이 왔다갔다 할 수 있다. commit이라는 것을 통해서 (tag, branch, checkout)


4. 다시 배포하였다.

 >> 서버에 다시 업데이트 해놓으면 프로젝트 인원 누구나 최신소스까지 업데이트 받을 수 있다.



commit 이라는 단위를 통해 자그마한 모든 변경점을 추적하고 관리할 수 있다. 

언제, 어디에서 문제가 생겼는지 또는 누가 수정한 내용이었는지도 파악할 수 있다.

Branch 전략을 이용해서 다양한 목적으로 협업을 할 수 있다. 


  • 다른 형상관리 시스템은?

  • GIT과 견주어 많이 사용하는 형상관리 시스템은 SVN 이 있다.

    하지만 GIT이 빠르게 발전하면서 Git의 사용 추세가 늘어나고 있다. 

    다만 GIT이 SVN 보다는 어렵다(?)라는 말이 있다. 

    Google Trends 에서 git 과 svn 을 비교한 결과는 아래와 같다~





  • 탄생 역사

리눅스 창시자인 토발즈는 BitKeeper 라는 상용 DVCS를 이용했었다.
2005년에 여러가지 이유로 BitKeeper 사용을 포기하고, 사용중에서 느꼈던 교훈을 바탕으로 git을 개발하게 된다. git이 세상에 나온지 10년이 조금 지나있다.

그 교훈은 5개이다.
  • Speed

  • Simple design

  • Strong support for non-linear development (thousands of parallel branches)

  • Fully distributed

  • Able to handle large projects like the Linux kernel efficiently
    (speed and data size)

위에서는 여러가지 이유라고는 했지만, 내막에는 재미있는 사건들이 있다.
https://www.linux.com/news/bitkeeper-and-linux-end-road
https://en.wikipedia.org/wiki/BitKeeper

http://www.zdnet.co.kr/news/news_view.asp?artice_id=00000039135721&type=det&re= (zdnet에서 2005년도에 쓴 기사가 있다.)

  • 여러 오픈 강좌들

오픈된 강좌들이 있다

https://www.udacity.com (유다시티)

https://opentutorials.org/course/2708 (생활코딩)

https://git-scm.com (Window.Mac용 Git 공식사이트, Pro Git 문서를 번역하여 무료로 배포하고 있다.)




Posted by HHHimchan
,