git이란?

Posted by 알 수 없는 사용자
2015. 5. 18. 11:20 시스템인프라/여러가지툴사용법



1. Git이란 ?


GIt은 프로그램 등의 소스 코드 관리를 위한 산 버전 관리 시스템이다. 빠른 수행 속도에 중점을 두고 있는 것이 특징이다. 최초에는 리누스 토르발스가 리눅스 커널 개발에 이용하려고 개발하였으며, 현재는 다른곳에서도 널리 사용되고 있다. 깃의 작업 폴더는 모두, 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하고 있으며, 완전한 형태의 저장소이다(로컬에 커밋이 된다). 네트워크에 접근하거나 중앙 서버에 의존하지 않는다.


2. Git의 주용 용어


Repository : 저장소를 의미하며, 저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장한다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인 할 수 있습니다.

Working Tree : 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점입니다.

Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치입니다.

Commit : 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업입니다.

Head : 현재 작업중인 Branch를 가리키는 것입니다.

Branch : 가지 또는 분기점을 의미하며, 작업을 할때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을때 Merge를 하여 작업을 합니다.

Merge : 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미합니다.


Branch와 Merge를 활용한 예제로는


1. 작업중인 웹사이트가 있다

2. 새로운 이슈를 처리할 새 Branch를 하나를 생성한다.

3. 새로만든 Branch에서 작업중이다

이때 빠르게 처리해야할 Hotfix가 생긴다. 그러면 다음과 같이 처리할 수 있다.

1. 새로운 이슈를 처리하기 이전의 Master Branch로 이동합니다.

2. Hotfix Branch를 새로 하나 생성합니다.

3. 처리한 Hotfix가 점검까지 끝나고나면 Master Branch로 Merge를 합니다.

4. 다시 작업하던 Branch로 넘어가서 원래 하던 작업을 진행합니다.


3. Git의 장점


-Branch and Merge

git은 여러가지의 Branch를 생성해서 합병과 삭제를 통해 여러가지를 시도해 볼수 있고, 합병과 삭제등이 가능하여 Branch의 독립성을 제공합니다.  예를 들어, 모험적인 기능을 프로그램으로 구현 하려고 할때 그 프로그램을 Branch에 계속 커밋을 해두면 그것이 완전히 독립적이라 사용이 불가능한다고 생각되면, 그 Branch를 삭제하면 되고 사용이 가능하다고 생각되면 Master와 합병을 하여 사용 할 수 있습니다.



-Distributed

전체 개발 이력을 각 개발자의 로컬로 복사본을 제공하고 변경된 이력을 다시 하나의 저장소로 복사한다.

     이러한 변경은 추가개발지점을 가져와, 로컬개발 지점과 동일하게 병합(merge)할 수 있다. 저장소는 웹서버 구성없이도 Git protocol 및 HTTP로 쉽고 효율적     근할 수 있습니다.


-Small and Fast

     Git은 지속적으로 어딘가의 서버와 통신을 하는 중앙 집중식 시스템이 아니라 자신의 로컬에서 작업을 하기 때문에 속도면에서 아주 우수합니다.


-Staging Area

     Git에는 Staging area가 존재하는데 working directory 즉 현재 작업디렉토리에서 자신이 올리려고하는 것 예를들어 파일 add를 하게되면 Staging Area라는            공간으로 이동을 하게 되는데. 이 공간은 저장소로 commit하기전에 파일을 점검할수 있는 공간 입니다. 여기서 자신이 commit하려고하는 파일과 최신 버전의 파            일을 비교하여 어느부분이 수정되었는가를 점검한후에 Repository로 commit을 할 수 있습니다. 



-Open source

     git은 GPL v2 오픈소스 라이센스를 사용해서 무료로 사용이 가능하다. 일부 유료프로그램들이 있지만, 개인이나 소규모로 프로젝트를 하는데 큰 상관이 없다. 또한      git 프로그램등에서 오픈 소스들이 많기 때문에 개발자들끼리 소통이 가능합니다.





※ 출처

https://git-scm.com/



'시스템인프라 > 여러가지툴사용법' 카테고리의 다른 글

Sourcetree를 이용한 Github 시작하기  (511) 2015.05.18
[이슈관리도구] redmine  (481) 2015.04.12