형상관리 버전관리에서 가장 우수하다고 생각되는 git과 github을 정리해보았다. git을 이해하고 git의 특징 및 장단점에 대하여 알아보고자 한다.



# git이란?

간단하게 git이 무엇이냐면 VCS(Version Control System)에 D를 더한 Distributed VCS라 말한다. 이는 분산버전관리로 다수의 사람들과 공통의 프로젝트를 진행할때 효과적으로 협업할 수 있는 도구이다. 여기서 D가 붙은 것이 Git의 큰 특징이라 할 수 있다.

분산되었다는 것은 해당 소스파일이 여러군데 존재한다는 의미이다. 예를들어 예전의 VCS 방식의 SVN을 예로 비교하자면 다음과 같은 장점을 가진다.



! Git의 장점
아래는 Git이 가진 장점입니다.

1. 여러 저장소에 분산 저장된다.
; 하나의 저장소를 가지는 경우 항상 네트워크를 통하여 최신 소스를 유지하고 관리하는 작업이 필요하다.(특히 커밋등의 액션에 대하여...) 하지만 이는 네트워크가 없는 환경에서 매우 불편할수 있는데 git은 자신의 로컬에 저장하기 때문에 네트워크가 없는 상태에서 얼마든지 커밋하고 작업을 이어갈 수 있다.

2. 중앙저장 방식이 아닌 분산저장
하나의 메인 저장소를 가지는 경우 만약 메인 저장소인 repository에 문제가 생길 경우 프로젝트에 참여중인 모든 작업자가 문제가 발생하게 된다.
하지만 git은 각각의 저장소를 가진다. 이는 자신이 가지고 있는 하나의 저장소에 문제가 생겨도 다른 작업자의 저장소에 접근하여 복구 및 계속 작업이 가능하게 된다.

3. 포크 생성 및 자유로운 브랜치 생성
git을 사용하면 프로젝트를 진행하기 위한 다양한 형상관리 방법들을 만날 수 있다. 이는 프로젝트의 규모, 방식에 따라 입맛에 맞는 관리 방식이 적용 가능하다는 것으로 git의 자율성이 높아 가능한 점이다. 사실 이런 이유가 처음에 git이 더 어렵게 느껴질 수 있게한다.
포크를 생성하는 기능은 git의 고유 기능은 아니며 github이 제공하는 서비스 중 하나이다. 동일한 저장소를 복제하여 보유할 수 있게되는데 포크된 클론 형태의 리모트 저장소를 메인으로 두고 다양한 브랜치를 생성하면서 프로젝트를 진행하거나 관리할 수 있는 매우 큰 장점이다.

그렇다면 git은 기존의 svn 방식과 무엇이 다른지 좀 더 자세하게 알아보자.
  • 1. dvcs 방식을 사용한다.
  • 2. 리눅스와 비슷한 인터페이스를 제공한다.
  • 3. 더 많은 command line을 가지고 있다. 그 만큼 더 어렵다.
  • 4. merge가 훨씬 간단하다.
  • 5. 일반적으로 전송이 더 빠르다.
  • 6. 파일을 기록하지 않고 다른 점을 찾아 스냅샷 형태로 기록한다.

이 외에도 이전 상태로 돌릴 수 있으나 revert가 존재하지 않는다.과거 상태의 리비전을 더한다.



! Github 알아보기
git이 형상관리를 위한 유틸리티라면 github은 이를 활용할 수 있는 서비스라 할 수 있다. github은 다양한 기능을 가지고 있는데 개인적으로 아래의 기능들이 주요 특징이다.
  1. 1. Fork를 사용한 clone
  2. 2. 커뮤니티의 활용 및 프로젝트 관리 기능
  3. 3. 소스 변경 및 커맨트 등록 등 다양한 편의성 제공


개인적으로 github을 사용하면서 느끼는 가장 큰 점은 안정성과 편의성이다. 물론 편리한 GUI는 기존의 svn이 더 많을 수 있겠지만 간편하면서 복잡한(?) 다양한 커맨드를 지원하고있다.(실제로 git은 동일한 동작을 수행하는 다수의 커맨드가 있다.) 이런 점이 git이 어렵다고 느끼게 하는 가장 큰 이유라고 할 수 있다.

github은 매우 다양한 공간이다. 프로젝트를 한 눈에 살펴볼 수도 있고 코드를 수정하고 개별코드에 코맨트를 달아 커뮤니케이션을 하거나 바로 커밋하는 등등등... 여러가지의 일들이 가능한 공간이다.

github 자체로도 훌륭하지만 더 뛰어난 프로젝트 또는 커뮤니케이션을 위한 다양한 어플리케이션들이 도 뛰어날 수도 있다. 사실 그런 이유로 github을 버전관리 위주로 사용하고 다양한 다른 어플들을 활용하기도한다. 향상된 github을 위하여 github을 확장하여 더 뛰어난 가능을 제공해주는 크롬 익스텐션 어플리케이션등이 존재한다. 이들을 함께 사용하면 부족한 github을 보완할 수도 있다.




# Github의 가격정책

Github은 Public 즉 오픈소스 등에 사용하는 공개(Public) 프로젝트에 사용은 무료이지만 Private 사용을 위해서는 인당 월 $7의 가격이 든다. 가격은 팀인 경우 등 다른 가격이 책정되므로 확인이 필요하다.

최신 업데이트)
최근에는 Github도 private 사용을 무료로 제공하고 있습니다. 제한적이지만 3명 이하의 인원의 경우 Private Repository를 생성할 수 있습니다.


@ Private and Public repository
repository로 기능은 모두 동일합니다. 다만 Public은 외부에 공개되는 공개 프로젝트에 사용할 수 있고 내부 또는 비공개 프로젝트는 Private으로 사용되야 하겠죠. 이 경우 비용이 발생할 수 있습니다.


GitHub's billing plans 링크 바로가기 > GitHub's billing plans​​​​​​​