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

  • 회원가입 없이 이용할 수 있는 무료 타자연습 웹사이트 TOP3

    지금이야 키보드를 보지도 않고 사용하지만 저도 예전에는 독수리 타법을 사용했던 적이 있었습니다. 누구나 초보의 시절은 있으닌까요. 저도 컴퓨터 좀 잘 해보고 싶어서 타자연습을 했던 적이 있습니다. 예전에는 주로 타자연습 프로그램을 다운로드 받아서 설치해서 사용했지만 지금은 굳이 그럴필요 없이 인터넷에서 바로 타자연습을 할 수 있는 웹사이트들이 있습니다. 지금 가장 유명한 인터넷 타자연습사이트 TOP 3를 소개하려고 합니다. […]

  • Angular에서 iframe사용시 unsafe value 에러 해결법

    HTML에서 iframe을 사용할 경우 XSS(Cross Site Scripting) 공격에 대한 방어의 목적으로 SOP( Same Oringin Policy) 정책을 걸어놨습니다. iframe을 이용한 XSS공격은 간단히 설명하면 해커가 어떤 게시판에 글을 작성할때 iframe으로 해킹코드가 있는 문서를 불러오도록 해 놓을 경우 해당 게시물을 열어 보는 대부분의 사용자 정보를 탈취할 수 있게 되는 해킹 기법을 말합니다. 하지만 보안이 검증된 youtube 영상을 불러온다던가 […]

  • 아이콘 폰트(Icon font) 자유자제로 사용하기

    웹사이트를 제작 시 생동감 있는 사이트를 만들기 위해서는 아이콘은 필수로 들어가는 요소입니다. 간단하게는 블릿에서 부터 중요하게는 웹사이트의 매인 이미지 까지도 아이콘으로 사용하는 경우가 있는데 예전에는 이러한 아이콘들을 디자이너에게 만들어 달라고 요청을 하던지 아니면 웹에서 무료로 제공하는 아이콘 이미지들을 찾아서 잘라서 적용하고는 했었는데요. 근래에는 오픈소스가 발달하면서 이러한 아이콘들을 쉽고 편하게 사용할 수 있게 제공해 주는 다양한 […]

  • gogs로 시놀로지의 Git Server을 Github처럼 사용하는 방법

    시놀로지에는 기본 패키지로 Git Server가 있습니다. 이것을 설치하고 실행을 하려면 SSH나 Telnet로 접속을 해서 CLI 명령어를 키보드로 쳐 줘야 사용할 수 있습니다. 하지만 이것에 추가로 Git Server를 Web 서비스 형태로 다룰 수 있게 해주는 추가 패키지를 설치하면 Github처럼 Web화면에서 서버를 서비스 할 수 있게 됩니다. Git Server를 Web 형식으로 다룰 수 있는 무료 소스는 여러가지가 […]

  • 월마트 자율주행 쇼핑카트

    요즘에는 자율주행이라는 것이 대세인가봅니다. 쇼핑카트까지 자율주행을 한다고 하니.. 뭐.. 몇년 전부터 상상은 해봤던 것이기는 한데.. 실제로 월마트에서 특허까지 취득을 했다고 하니 곧 마트에서 혼자 굴러다니는 쇼핑카트를 볼 날도 멀지 않은것 같습니다. 월마트에서는 위치파악센서, 비디오카메라, 무선네트워크기술을 활용한 기기를 쇼핑카트의 밑에 부탁을 하면 카트가 자유롭게 욺직여서 호출한 사용자 앞으로 오기도 하고 사용자가 원하는 상품의 위치로 안내까지 하는 […]

  • 시놀로지 NAS의 Docker로 STRAPI설치하기

    시놀로지 NAS는 개발자에게 축복과도 같은 장비입니다. 일반 사용자처럼 사진의 관리나 파일의 관리를 개인용 클라우드처럼 사용할 수 도 있지만 DSM을 활용한다면 다양한 용도로 사용할 수 있기 때문입니다. 더욱이 Docker을 활용한다면 웬만한 Toy프로젝트나 개발용 프로젝트 정도는 쉽게 구현할 수 있습니다. 이번에 STRAPI라는 오픈소스 프로그램에 흥미가 생겨서 시놀로지의 Docker을 활용하여 설치 해보려고 합니다. STRAPI는 아주 쉽게 Restfull 또는 […]

답글 남기기

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