git
은 개발자에게는 없어서는 안될 버전관리시스템
입니다.
SVN
이 중앙집중식 버전관리 시스템이라면 git은 분산 버전관리 시스템이라 할 수 있습니다.
이번 포스팅에서는 git에 대한 전체적인 개념에 대해서 작성하려고 합니다.
버전관리시스템이란?
https://git-scm.com/book/ko/v2를 찾아보면…
버전 관리 시스템은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다. 라고 정의를 하고 있습니다.
소스코드뿐만이 아니라 그래픽 파일까지도 버전관리를 할 수 있다고 합니다.
저장소(레파지토리)라고 하는 데이터베이스에 파일의 변경내용을 지속적으로 기록하고 복구할 수 있도록 도와주는 시스템을 말합니다.
중앙집중식 버전관리 시스템과 분산 버전관리 시스템의 차이
중앙집중식 버전관리 시스템의 대표는 SVN(Apache Subversion)이라고 말 할 수 있고 분산 버전관리 시스템은 git이라고 말할 수 있습니다.
▲ 중앙집중식 버전관리는 버전관리를 중앙 서버에서 진행을 합니다. 그래서 온전한 버전의 관리는 서버에서만 확인을 할 수 가 있습니다.
▲ 반면에 분산 버전관리 시스템은 온전한 버전관리를 서버에서도 하지만 로컬저장소에서도 동일하게 한다는 것입니다.
쉽게 설명하면 분산 버전관리 시스템은 중앙집중식 버전관리시스템의 온전한 내용을 통째로 로컬저장소들에도 가지고 있고 동일하게 서버에도 가지고 있는 형태 입니다.
그래서 commit
명령어가 SVN에서는 서버로 올리는 것이지만 git에서는 로컬의 최종본으로 저장하는 명령어가 되는 것입니다. (git에서 서버에 올리는 명령어는 git push
를 추가로 실행해 줘야 합니다.)
git push
를 실행하면 로컬저장소의 내용을 통째로 서버에 올리게 됩니다.
분산 버전관리 시스템은 기본적으로 버전관리를 로컬해서 한다고 생각하면 됩니다.
로컬에서 버전관리를 진행하고 프로그램이 완벽하다 싶고 팀원들이나 다른 공동작업자들과 공유를 해야 할 때만 git push
를 해서 원격저장소에 업로드를 하는 방식으로 진행을 합니다.
분산 버전관리 시스템의 장점
분산 버전관리 시스템의 장점은
- 원격저장소가 어떠한 이유로 인해 날라가거나 파괴가 되어도 로컬저장소를 다시 복사만 하면 복원이 가능함
- 인터넷이 되지 않는 상황에서도 버전관리를 할 수 있음
- 기본적으로 로컬에서 작업을 하므로 속도가 빠름
- 일단 내 컴퓨터에서만 작업을 하는 것이므로 심리적인 안정감이 있음
- 기타 등등..
git 클라이어언트
분산 버전관리 시스템인 git을 좀더 편리하게 사용할 수 있는 무료 git 클라이언트가 있습니다.
GUI 기반 git클라이언트를 사용하기 전에 먼저 git을 설치 해야 합니다.
GUI 기반 git 클라이어언트들은 지금 설치한 git(git-scm)에 대해 GUI형태로 쉽고 편리하게 명령어를 실행시키게 해주는 도구라고 보시면 됩니다.
원래 CLI git(git-scm)명령어는 이전 포스팅 인 git사용법과 명령어을 참조하시면 됩니다.
Tortoisegit
Tortoise SVN
으로 많은 사랑을 받아왔던 Tortoise에서 git에 대한 클라이언트도 제작을 해서 무료로 배포를 하고 있습니다.
사용법도 Tortoise SVN
과 비슷하게 탐색기와 통합이 되어 있어서 편리합니다.
단점이라면 windows용만 있다는 것입니다.
SourceTree
SourceTree
는 JIRA 와 Confluence로 유명한 atlassian 에서 만든 GUI 기반의 git client 입니다.
어느정도 안정성을 갖춰져 있고 git의 다양한 명령어를 모두 가지고 있기 때문에 현재 가장 안정적으로 사용되는 git 클라이언트라고 보시면 됩니다.
SourceTree
는 Windows뿐만 아니라 Mac용으로도 사용이 가능합니다.
git 서버
서비스명 | 설명 | URL |
---|---|---|
GITHUB | 무료로 사용 가능하나 소스가 공개됨 | https://www.github.com |
GITLAB | 무료로 무제한 사용가능 | https://about.gitlab.com |
Bitbucket | 저렴한 가격에 사용가능 | https://bitbucket.org |
Bonobo Git Server | 설치형 git서버 (Win) | https://bonobogitserver.com |
gogs | 설치형 git서버 (Linux/Win/Mac) | https://gogs.io |
gitea | 설치형 git서버 (Linux/Win/Mac) | https://gitea.io/en-US |