본문 바로가기
스터디/gIt

버전 관리 시스템(VCS) Git 그리고 GitHub.

by 깝태 2016. 11. 27.



최근 Git 을 이용해 온라인 스터디를 함께 하고 있는데 진행하면서 함께하는 내용을 공유할 예정입니다.





Git 과 같은 버전 관리 시스템은 예전에 다른 동료분들과 함께 프로젝트를 진행하면서 처음 사용을 했었다.

이론적인 부분을 공부하는 것도 좋아하는 편이라 한번 전반적인 부분에 대해서도 알아보는 것이 나쁘지 않은 시간이 될 듯 싶다.



 - 버전 관리 시스템(Version Control System; VCS)

말 그대로 파일의 변화를 저장하고 관리할 수 있는 시스템을 의미한다. 특히 변화가 자주 필요하고 각 변화간의 저장과 불러오기가 자주 필요해지는 개발 분야에서는 이 용도가 좀 더 의미있고 중요하게 사용된다.


시스템은 3가지 방식으로 이루어져 있다.

*로컬 버전 관리 (local Version Control System; LVCS)


*중앙 집중식 버전 관리 (Centralized Version Control System; CVCS)

 - `SVN(Subversion)` 은 여기에 속한다. 중앙 서버에 저장하고, 관리하고 내용을 보관한다. 중앙 서버에 100% 의존이기 때문에 중앙 서버에 문제가 생기면 관리 및 보관에도 문제가 생기며 원격으로 주고받던 모든 이용자들에게도 문제가 발생한다.


*분산 버전 관리 (Distributed Version Control System; DVCS)

 - `Git` 은 여기에 속한다. 중앙 시스템의 여러 단점을 커버하고 있다. 달리 분산되어 로컬과 원격 저장소를 가지고 있으며 다수의 사용자가 원격 저장소를 가지고 있다. 추가의 장점으로 스냅샷이라는 것이 존재하며 기존의 SVN 과 차원이 다른 브랜치를 활용하는 강력한 기능들이 많다. 그리고 이러한 원격 저장소로 우리는 Github, Bitbucket 등의 서비스를 이용하고 있다.


여기서 Git 은 리누스 토발즈가 기존의 버전 관리 시스템에 어려움을 겪고 리눅스 커널 관리를 위해 만든 오픈소스로 현재 모든 기업체가 Git 을 활용해 시스템 히스토리 등을 관리하고 있다.


*[작업] -> git add: [스테이지] -> git commit: [로컬 저장소] -> git push: [원격 저장소]

작업 내용이 업로드 되는 저장소는 위 과정과 같이 이루어진다.



 - 원격 저장소 서비스

처음 오픈소스를 이용하기 위해 Github 를 사용 했고, 스타트업 내에서 비공개 저장소를 위해 Bitbucket 을 사용했다. 그리고 현재는 GitLab 이라는 서비스를 사용하고 있다.


1. Github (https://github.com)

 - 가장 인기가 많은 원격 저장소이며 많은 연결되어진 서비스가 많다. UI 는 평범한 수준이며 개인적으로는 이용하기 편하다.


2. Bitbucket (https://bitbucket.org)

 - 비공개를 무료로 사용할 수 있다. (물론 제한적인 부분이 있음) 이거 아니였으면 안 썼다. UI 정말 별로.


3. GitLab (https://about.gitlab.com)

 - Lab 이라는 이름을 가지고 있는 것과 걸맞게 애초부터 UI/UX 와 내부 기술들이 단체를 위하여 만들어진 것 같은 느낌이 많이 든다. 여러 프로젝트와 저장소를 관리하기에도 편하다. 최근에는 투두리스트, 스케줄과 연결된 등등의 기능과 함께 새로운 것들이 계속해서 추가되고 있어 점점 맘에 들고 있다.



 - Git 과 함께 할 수 있는 것.

아무래도 이번 스터디는 Git-Github 를 활용하는 것이기에 Github 와 연관되어진 것들을 주로 확인해보겠다. 


1. GitHub

현재 여러 원격 저장소 상용 서비스 중 가장 활발하게 사용되고 있는 서비스 이다. 커뮤니티 서비스라고 봐도 될 정도로 여러 부분에서 가장 강력한 면모를 가지고 있으며 사용자들에게 제공되고 있는 컨텐츠 또한 가장 많다. 아쉬운 점은 비공개는 유료 정책으로 운영이 되고 있다는 점 밖에 없다. (대학생이라면 크레딧을 받아 사용할 수 있는 것으로 알고있다.)


나도 아직 GitHub 서비스 자체 (Bitbucket 과 GitLab 을 주로 사용.) 본격적으로 사용해본 적은 없다. 기타 오픈소스 또는 라이브러리 필요해 확인해본 적 말고는, 이번 시간을 통해 많은 이해를 높이고 싶다.

 

2. 데스크탑 용 프로그램. (https://desktop.github.com/)

Github 계정을 이용하여 연동되어진 프로젝트를 PC 프로그램에서 관리할 수 있다. 깃은 항상 터미널 환경에서만 사용해보고 PC 프로그램을 직접 사용해본 적은 없었다. 명령어에 익숙해지고난 이후로는 굳이 프로그램의 필요성을 느껴보지 못 했었다. 확실히 사용해보면 편하다는 말이 많다. 간단하게 둘러봤을 때는 가장 끌리는 점은 커밋 간의 차이를 보기가 좋다는 점이될 것 같다. (터미널에서는 `git diff` 를 이용한다.)


3. Git Book (https://www.gitbook.com)

GitBook 은 Git 과 마크다운을 이용해 말 그대로 책을 구축할 수 있는 서비ㅡ 이다. Node.js 로 만들어진 라이브러리로 GitHub 와 연동되어 구축해 사용할 수 있다. 이전부터 Git 과 연관된 페이지인데 상당히 문서를 보기 편하고 책과 같은 프레임으로 만들어져 매력이 느껴진 페이지가 많았다. 평소의 귀찮음으로 해당 부분에 대해서 별로 알아보지 못 했는데 이번 기회에 해당 스터디에서의 글과 함께 연재할 예정이다.


GitBook 에서 제공하는 템플릿으로는 일반 책, API 명세서, 지식 기반 등의 템플릿을 기본 제공하며 선택하면 무료로 구축할 수 있다. API 명세로 해보고 싶었지만 역시나 비공개는 유료 정책이기에 일반 책(BOOK & MANUAL) 템플릿으로 작성을 시작해볼 예정이다.


4. Git Blog (https://pages.github.com/)

GitHub Pages 라는 서비스를 활용해 말 그대로 블로그를 구축할 수 있는 서비스 이다. 직접 글을 올리고 관리할 수 있으며 GitHub 에서 무료로 호스팅을 도와주어 손쉽게 공개 웹페이지로 사용할 수 있다. GitHub 에서 제공하는 제작 도구로 쉽게 페이지를 만들어 공개하고 관리할 수 있다. 해당 기능을 이용하여 많은 사람들이 블로그로 운영하고 있다.


Git 은 기본 HTML 컨텐츠만 지원하지만 추가로 Jekyll 이라는 것을 이용하여 여러 블로그 기능과 템플릿을 사용하여 블로그를 꾸밀 수 있어 사용하는 추세가 늘고 있다.


이번에는 Git Book 과 Git Blog 를 직접 구축하지는 않았지만 바로 다음주에 걸쳐 구축 작업까지 해보고 게시글을 함께 게시할 예정이다.



 - 참고 스터디 링크.

*버전 관리란? (https://git-scm.com/book/ko/v1/시작하기-버전-관리란%3F)

*위키의 버전 관리 (https://ko.wikipedia.org/wiki/버전_관리)

*SVN 능력자를 위한 Git 개념 가이드 (http://www.slideshare.net/einsub/svn-git-17386752)

*버전관리를 들어본적 없는 사람들을 위한 DVCS - Git (http://www.slideshare.net/ibare/dvcs-git)

*GitHub, Bitbucket Pull Request 활용기 (http://readme.skplanet.com/?p=13300)

*GitBook Toolchain Documentation for Multi-Languages. (https://tinydew4.gitbooks.io/gitbook/content/ko/)