Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Git

Git은 소프트웨어 개발에서 발생하는 소스 코드의 변화를 추적하기 위한 분산 버전 관리 시스템이다. 프로그래머 간의 소스코드 작업을 조정하기 위해서 설계되었지만 바이너리 파일을 포함한 모든 파일의 변경 사항을 추적하는데 사용 할 수 있다. Git의 목표는 속도, 데이터 무결성, 분산 워크플로우의 지원이다.

Git은 리누즈 토발즈(Linus Torvalds)가 커널 개발을 관리하기 위한 목적으로 2005년 만들었다. Git 디렉토리는 중앙 서버와 상관 없이 완전한 히스토리 및 전체 버전 추적 기능을 가진 완전한 저장소다. Git은 GNU General Public Licens version 2에 따라 배포되는 오픈소스 소프트웨어다.

디자인

Git의 디자인은 BitKeeper와 Monotone으로 부터 영감을 받았다. Git은 원래 낮은 수준의 버전 관리 시스템으로 설계되었으며 Cogito나 StGIT와 같은 프론트엔드를 함께 사용 할 수 있었다. BitKeeper의 영향을 많이 받기는 했지만 토발즈는 기존의 접근 방식을 회피하고 고유한 디자인을 만들었다.

특징

  • 강력한 비선형(non-linear) 개발의 지원 : 코드의 어느 영역에서든지 자유롭게 수정이 가능하다. git은 branch를 이용해서 비선형 개발을 지원한다. 개발자는 코드의 어느 영역에서든 branch(가지치기)를 만들어서 코드를 수정하고 나중에 원래 가지와 merge 할 수 있다. 언제든지 branch를 만들고 merge 할 수 있기 때문에, 변경 내용이 다양한 검토자에게 빠르게 전달 될 수 있다. Git에서 브랜치는 단지 하나의 commit에 대한 참조로 매우 가볍게 사용 할 수 있다.
  • 분산 개발 : Git은 Darcs, BitKeeper, Mercurial, Bazaar, Monotone과 같이 전체 개발히스토리에 대한 로컬 사본을 저장한다. 변경사항은 로컬 사본에 저장되고 다른 저장소로 복사된다. 이러한 변경사항은 브랜치로 가져와서 병합 할 수 있다.
  • 기존 시스템 및 프로토콜과의 호환 : Git은 HTTP, FTP, SSH, 일반 소켓등 다양한 프로토콜을 통해서 사용 할 수 있다. 또한 git은 CVS 서버 에뮬레이션 기능이 있어서 기존 CVS 클라이언트 및 IDE 플러그인을 사용하여 git 레포지토리에 접근 할 수 있다. Subversion 저장소는 git-svn으로 직접 접근 할 수 있다.
  • 대규모 프로젝트의 효율적인 처리 : 토발즈는 git이 높은 확장성을 가지며 빠른 성능을 가지고 있다고 설명했다. 모질라가 수행한 성능 테스트에 따르면 몇몇 버전 관리 시스템들 보다 훨씬 빠르다.
  • 안전한 히스토리의 관리 : Git 히스토리는 특정 버전의 ID(git 용어로 commit)에 연결되며, 이 commit은 이전의 전체 게발 히스토리에 연결된다. 따라서 일단 게시된 후에는 이전 버전을 변경 할 수 없다.
... 계속