git이란 무엇인가?

git은 개발자에게는 없어서는 안될 버전관리시스템입니다.
SVN중앙집중식 버전관리 시스템이라면 git은 분산 버전관리 시스템이라 할 수 있습니다.

이번 포스팅에서는 git에 대한 전체적인 개념에 대해서 작성하려고 합니다.

버전관리시스템이란?

https://git-scm.com/book/ko/v2를 찾아보면…

버전 관리 시스템은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다. 라고 정의를 하고 있습니다.

소스코드뿐만이 아니라 그래픽 파일까지도 버전관리를 할 수 있다고 합니다.

저장소(레파지토리)라고 하는 데이터베이스에 파일의 변경내용을 지속적으로 기록하고 복구할 수 있도록 도와주는 시스템을 말합니다.

중앙집중식 버전관리 시스템과 분산 버전관리 시스템의 차이

중앙집중식 버전관리 시스템의 대표는 SVN(Apache Subversion)이라고 말 할 수 있고 분산 버전관리 시스템은 git이라고 말할 수 있습니다.

tistory-image

▲ 중앙집중식 버전관리는 버전관리를 중앙 서버에서 진행을 합니다. 그래서 온전한 버전의 관리는 서버에서만 확인을 할 수 가 있습니다.

tistory-image

▲ 반면에 분산 버전관리 시스템은 온전한 버전관리를 서버에서도 하지만 로컬저장소에서도 동일하게 한다는 것입니다.
쉽게 설명하면 분산 버전관리 시스템은 중앙집중식 버전관리시스템의 온전한 내용을 통째로 로컬저장소들에도 가지고 있고 동일하게 서버에도 가지고 있는 형태 입니다.
그래서 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

tistory-image

Tortoise SVN으로 많은 사랑을 받아왔던 Tortoise에서 git에 대한 클라이언트도 제작을 해서 무료로 배포를 하고 있습니다.
사용법도 Tortoise SVN과 비슷하게 탐색기와 통합이 되어 있어서 편리합니다.
단점이라면 windows용만 있다는 것입니다.

SourceTree

tistory-image

SourceTreeJIRAConfluence로 유명한 atlassian 에서 만든 GUI 기반의 git client 입니다.
어느정도 안정성을 갖춰져 있고 git의 다양한 명령어를 모두 가지고 있기 때문에 현재 가장 안정적으로 사용되는 git 클라이언트라고 보시면 됩니다.
SourceTreeWindows뿐만 아니라 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

Similar Posts

  • BMW의 새로운 도전!! 무선충전시스템의 양산

    전기차가 지속적으로 발전을 하고 있고 현재는 한번 충전으로 거의 300km ~ 390km까지 달릴수 있는 차가 대세를 이루고 있는 상황입니다. 그정도 거리면 서울에서 부산까지 편도로 한번 찍을 수 있는 거리인데요. 그것 까지는 대단히 좋은 성과라 할 수 있습니다. 하지만 항상 그 다음이 문제가 되는 것은 그럼 어떻게 다시 서울로 올라오느냐 입니다. 그렇습니다. 바로 충전의 문제 입니다. […]

  • Angular의 개요

    Angular에 대한 세부적인 포스팅을 하기 전에 먼저 간단하게 개요를 정리 합니다. Angular란? 구글에서 만든 open-souce web application SPA(Single Page Application) 개발이 가능 다양한 플랫폼에 맞게 개발 가능 유지보수, 개발 속도 향상 (데이터 바인딩, 템플릿 등의 문법 제공 ) 아키텍쳐 Angular의 구성요소 Angular2를 구성하는 요소는 크게 4가지 입니다. 컴포넌트 (Component) 모듈 (Module) 서비스 (Service) 지시자 (Directive) […]

  • Node.js의 유용한 모듈 소개

    Node.js에서는 475,000개에 달하는 정말 많은 모듈이 존재합니다. 그중에서 제가 사용해 봤던 몇몇 유용한 모듈을 소개할까 합니다. 1. url (표준모듈) url 모듈은 상대URL을 절대URL로 변경 해주는 등 url 사용에 대한 다양한 기능을 제공하고 있습니다. 간단한 기능 API는 아래와 같습니다. url.resolve(from, to) // 상대경로를 절대경로로 변경하여 줍니다. url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) // url 문자열(urlStr)을 url 객체로 변환하여 리턴합니다. […]

  • 구글 머티리얼 아이콘(Material icons) 폰트 사용하기

    아이콘 폰트인 구글 머티리얼 아이콘 (Google Material icons)을 사용하는 방법입니다. 아이콘폰트가 무엇인지 궁금하면 이전에 포스팅한 아이콘 폰트(Icon font) 자유자제로 사용하기를 먼저 읽어 보시는 것을 추천합니다. 구글 머티리얼 아이콘 (Google Material icons) 구글 머티리얼 아이콘 홈페이지바로가기 구글에서도 머티리얼 아이콘을 무료로 사용할 수 있게 공개를 했습니다. 구글 머티리얼 아이콘은 웹폰트형식 뿐만이 아니라 안드로이드나 아이폰에서도 사용할 수 있게 […]

  • 정기적인 작업을 수행해 주는 스케쥴러들

    윈도우즈나 리눅스(유닉스), 또는 Mac OS X 같은 시스템에는 기본적으로 정기적으로 반복작업을 처리해 주는 스케줄러 프로그램들이 내장되어 있습니다. 윈도우즈에서 작업 스케줄러가 있는것 처럼 리눅스나 Mac OS X에는 cron이라는 것이 있습니다. 윈도우즈는 GUI(Graphic User Interface)로 되어 있어 화면을 보고 마우스로 쉽게 설정을 할 수 있는 반면 리눅스는 쉘에서 텍스트 형태로 작성을 해야 하기 때문에 먼저 학습이 필요합니다. […]

  • Angular에서 사용되는 타입스크립트 문법

    타입스크립트에 대한 간단한 문법을 정리하려고 합니다. 타입과 문자열 선언자 var : javascript에서 전통적으로 사용해온 선언자로 모든 타입을 허용 let : typescript에서 특화시킨 선언자로 타입을 지정해야 함 배열타입 배열의 타입을 아래와 같이 설정하며 배열에 값을 입력할때는 push()를 사용함 let fruits: string[] = [“바나나”,”사과”,”오렌지”]; let num1:Array = [1,2,3]; let num2:Array = new Array(); num2.push(1); num2.push(2); num2.push(3); 유니언타입 […]

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다