본문 바로가기

Programming/Git

1. Introduction to GIT

GIT 사용한지 어언 1년이 되어가지만, 정작 자신이 GIT 대해서 아는 것이 별로 없다고 생각되는 어느 5월의 나른한 오후에 번뜩 GIT 매뉴얼을 만들어 보자라는 생각을 하게 되었다.



GIT 매뉴얼의 한글화 작업에 대한 의무감때문이 아니라, 자신이 좀더 GIT 사용법에 대해서 익숙해 지는 좋은 계기가 것이라는 생각때문에 작성하게 포스팅이다.



GIT 리누스 토발즈가 Linux 소스를 관리하기 위해서 만든 소스 버전 관리 프로그램이다.

이미 한국이 아닌 외국에서는 많이 쓰이지만, 유독 한국에서만 쓰이지 않는 같다.



GIT 버전 관리로 채택하여 사용하는 대표적인 프로젝트에는 아래과 같은 프로젝트가 있다.



1. GIT

2. Linux Kernel

3. Perl

4. Eclipse

5. Gnome

6. KDE

7. Qt

8. Ruby on Rails

9. Android

10. PostgreSQL

11. Debian

12. X.org







GIT 무료이자, 오픈 소스이며 분산 버전 관리 시스템으로서, 속도와 효율이 우수하고, 작은 프로젝트부터 프로젝트에 이르기까지 다양하게 사용할 있도록 디자인 되었다.



모든 Git clone 들은 full-fledged repository 로서 모든 history revision 추적기능, 중앙 서버로부터 의존적이지 않는 특성 가지고 있다.

Branch 나누는 것과 합치는 것이 매우 빠르고 쉽다 장점도 있다.



Git  Mercurial, Bazaar, Subversion, CVS, Perforce, Visual SourceSafe 툴과 같이 파일에 대한 버전 관리에 사용된다.



현재 GIT 프로그램은 Windows, Mac OSX, 기타 Linux 시스템을 위하여(Binary, Source) 제공이 된다.

Windows, Mac OSX GIT 프로그램은 Google 에서 배포하고 있다.



GIT 크게 아래와 같은 특징 가지고 있다.



 1. Distributed development

    - 대부분의 다른 최근의 버전관리 시스템과 깉이, Git 전체 개발 history 정보를 가지고 있는 local copy 개발자에게 제공하고, 변경된 이력은 repository(저장소) 에서 다른 곳으로 복사 된다.이러한 변경이력은 추가적인 개발 branch import 되며, 이렇게 import branch local 에서 개발한 branch 같은 방식으로 병합할 있다. Repository 들은 Git 프로토콜 혹은  단순히 HTTP 프로토콜을 사용하여 접근할 있다.



 2. Strong support for non-linear development

    - Git 빠르고 편한 branch merge 기능을 지원하고, non-linear 개발 이력을 시각화 하고 탐색할 있는 강력한 (gitk) 제공한다.



 3. Efficient handling of large projects

    - Git 매우 빠르고, 특히나 크고 history 내역이 프로젝트에 매우 작동한다. 보통 다른 버전 관리 시스템보다 빠르고 특정 작업은 빠르다. Git 다른 오픈소스 버전 컨트롤 시스템보다 효율적인 revision 관리를 수행한다.



 4. Cryptographic authentication of history

    - Git history  revision 이라는 특수한 이름으로 저장된다. (Git 용어로는 "commit") revision commit 까지의 완전한 개발 history 의존한다. Revision 일단 만들어지면, 오래된 버전의 revision 통지 없이는 변경할 없다. 또한 tag 들은 암호화 되어 저장이 된다.



 5. Toolkit design

    - Unix 관례를 따라서 Git C 언어로 작성된 많은 작은 Tool 들의 집합체이다. 그리고 많은 수의 script 들이 이러한 기능을 수행하도록 도와준다. Git 개발자가 사용하기 쉽도록, 그리고, 새로운 기능을 수행할 있도록 script 작성을 쉽게 하기 위해 tool 들을 제공한다.





여기서 개인적인 의견을 내놓자면, Git 기타 다른 버전 관리 (Subversion, CVS) 과는 달리 중앙 서버에 의존하지 않고 개발자 개개인이 자유롭게 변경이력을 관리할 있다는 장점이 나에게는 가장 매력이었다.

또한, gitk 라는 강력한 GUI 제공하여, 소스 트리의 변경 내역과 Branch , tag 들을 눈에 살펴 있는 편리한 개발 환경을 제공한다는 것이 좋았다.

또한 경험상, Subversion 이나 CVS 보다 훨씬 빠르다 생각이 든다.

물론 GIT 소스 버전관리 툴로서 제일 좋다는 생각은 어디까지나 개인적인 생각이고, 기타 툴들도 나름의 장점을 가지고 있다고 생각한다. 하지만 내가 개발하는 환경에서는 GIT 가장 좋은 소스 버전 관리 툴이라고 생각한다. 무엇보다 Linux 아버지 Linus Torvalds 만든 프로그램이라는 사실이 더욱 믿음이 가게 준다. :)

'Programming > Git' 카테고리의 다른 글

6. Git Repository (저장소) 를 얻어오기  (0) 2011.07.03
5. Git 도움말 얻기  (0) 2011.07.03
4. Git 설정하기  (0) 2011.07.03
3. Git 설치하기  (0) 2011.07.03
2. Git 의 간단한 역사  (0) 2011.07.03