무엇인가
에 대해 이해한다.왜 사용하는가
에 대해 이해한다.Linux 커널은 굉장히 규모가 큰 오픈소스 프로젝트다. Linux 커널의 삶 대부분은(1991–2002) Patch와 단순 압축 파일로만 관리했다. 2002년에 드디어 Linux 커널은 BitKeeper라고 불리는 상용 DVCS를 사용하기 시작했다.
2005년에 커뮤니티가 만드는 Linux 커널과 이익을 추구하는 회사가 개발한 BitKeeper의 관계는 틀어졌다. BitKeeper의 무료 사용이 재고된 것이다. 이 사건은 Linux 개발 커뮤니티(특히 Linux 창시자 Linus Torvalds)가 자체 도구를 만드는 계기가 됐다. Git은 BitKeeper를 사용하면서 배운 교훈을 기초로 아래와 같은 목표를 세웠다.
Git은 2005년 탄생하고 나서 아직도 초기 목표를 그대로 유지하고 있다. 그러면서도 사용하기 쉽게 진화하고 성숙했다. Git은 미친 듯이 빨라서 대형 프로젝트에 사용하기도 좋다. Git은 동시다발적인 브랜치에도 끄떡없는 슈퍼 울트라 브랜칭 시스템이다.
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은 작은 프로젝트부터 매우 큰 프로젝트들까지 빠르고 효율적으로 다룰 수 있게 디자인된 무료 오픈소스 분산 버전 관리 시스템이다.
버전 관리 시스템(Version Control System)은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.
VCS를 사용하면 각 파일을 이전 상태로 되돌릴 수 있고, 프로젝트를 통째로 이전 상태로 되돌릴 수 있고, 시간에 따라 수정 내용을 비교해 볼 수 있고, 누가 문제를 일으켰는지도 추적할 수 있고, 누가 언제 만들어낸 이슈인지도 알 수 있다. VCS를 사용하면 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.
물론 사용해야하는 이유는 너무나 분명하다.
대학 시절 너무나 공감되는 파일 정리법이다. 위의 이미지에서 문제점이 무엇일까?
교수님에게 빠꾸먹는건 아쉽게 된 일이겠지만 그외 나머지 문제들은 vcs를 사용해서 해서 해결할 수 있다!
앞서서 VCS에 대해서 설명했다. 그래 그렇다면 다른 VCS(CVS
, SVN
)가 아닌 왜 하필 git을 사용할까?
이 설명이 시작되기 전에 VCS의 유형를 읽어보는 것도 좋다.
분산형 버전 관리 시스템은 중앙집중식 버전 관리 시스템과는 달리 클라이언트가 단순히 파일의 마지막 스냅샷을 Checkout 하지 않고 저장소를 히스토리와 더불어 전부 복제한다. 그렇기 때문에 서버에 문제가 생기면 이 복제물(클라이언트의 복제물)로 다시 작업을 시작할 수 있다. 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다.
다른 VCS와는 가장 두드러진 차이점이기 때문에 중요한 포인트이다. 따로 주제를 만들어 포스팅해야겠다.
VCS 시스템 대부분은 관리하는 정보가 파일들의 목록이다. CVS, SVN, Perforce, Bazaar 등의 시스템은 각 파일의 변화를 시간순으로 관리하면서 파일들의 집합을 관리한다.(보통 델타 기반 버전관리 시스템이라 함)
댜신 Git은 데이터를 파일 시스템 스냅샷의 연속
으로 취급하고 크기가 아주 작다. Git은 커밋하거나 프로젝트의 상태를 저장할 때마다 파일이 존재하는 그 순간을 중요하게 여긴다. 파일이 달라지지 않았으면 Git은 성능을 위해서 파일을 새로 저장하지 않는다. 단지 이전 상태의 파일에 대한 링크만 저장한다.
수많은 IT 기업들에서 사실상 표준으로 Git을 사용하고 있다. 기술적 보안이 중요한 대기업에선 엔터프라이즈 GitHub(또는 GitLab 등)도 사용하여서 코드를 관리하고 있다.
github이 망하지 않는 이상. 즉, 세계의 모든 개발자들에게만 걸리는 특수한 병이 퍼져 더이상 개발을 하지 못하는 상황이 오는 경우나 Microsoft가 망하는 경우가 아니라면 git은 망할 수 없다.