깃 개념 간단 정리

깃(Git)이란?

깃(Git)은 분산 버전 관리 시스템(DVCS)의 일종이다. 깃은 형상 관리 도구라고도 불린다. 깃은 주로 소프트웨어를 개발하는 소스 코드를 효과적으로 관리할 수 있게 도와주는 무료 오픈 소프트웨어이다.

깃은 DVCS의 일종이기 때문에 중앙 저장소가 손상되어도 로컬 저장소를 이용하여 원상복구가 가능하다. 또한 로컬 저장소에서 개발을 진행할 수 있기 때문에 인터넷 연결이 필요하지 않아도 되며, 각각의 개발자들이 브랜치(branch)를 통해 개발한 후 합치는(merge) 방식으로 진행할 수 있기 때문에 협업도 쉬워진다.

깃의 특징은 다음과 같다.

1. Branching and Merging

깃은 브랜치(branch)와 합병(Merge)이라는 개념이 있다. 브랜치는 ‘가지’라는 뜻으로 나무에서 여러 갈래로 뻗어나가는 가지처럼 소스 코드도 사람에 따라 여러 개로 나뉠 수 있다는 개념이다. 새로운 아이디어를 적용시켜보거나, 버그를 수정하거나, 이전 버전으로 돌아가거나 개선하는 등이 모두 브랜치를 만들며, 이것들을 통합(Merge)할 수 있다.

2. Small and Fast

깃은 모든 작업이 로컬에서 진행되기 때문에 네트워크 통신에 많은 비용을 들이지 않아도 된다. 또한, 깃은 C언어로 작성됐기 때문에 작고 빠르다.

3. Distributed

깃은 분산되어 있다. 사용자들은 저장소를 복제(clone)해서 로컬 저장소로 가져온다. 이는 수많은 백업들이 분산되어 저장되어 있다는 뜻이다. 따라서 중앙 저장소의 장애를 극복하기 쉬워진다.
깃은 분산되어 있기 때문에 수많은 workflow를 가질 수 있다. 때때로 workflow를 합칠 때 문제가 발생할 수 있지만 GitHub 저장소와 같은 것을 사용하여 합병한다면 더 쉽게 관리할 수 있다.

4. Data Assurance

모든 파일과 커밋(commit)은 검증되기 때문에 저장소에 넣은 그대로, 무결성을 보장한다.

5. Staging area

StagingArea

커밋이 일어나는 영역으로 커밋 전 검증을 할 수 있는 곳이기도 하다. 수정한 내용을 반영하기 전 검토하는 단계라고 할 수 있다.

6. Free and Open Source

깃은 무료이며 오픈 소스이기 때문에 누구든 사용할 수 있다.

깃허브(GitHub)란?

깃허브는 깃을 지원하는 웹 호스팅 서비스 시스템 중 하나이다. 깃허브를 통해 로컬에 있는 데이터를 업로드하거나 내려받는 등 깃을 더 쉽게 이용할 수 있다.

버전 관리 시스템(Version Control System)이란?

버전 관리 시스템(VCS)은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다. 많은 개발자들이 소스 코드를 관리할 때 VCS를 사용하지만, 거의 모든 컴퓨터 파일의 버전을 관리할 수 있다.

VCS를 사용하면 각 파일을 이전 상태로 되돌릴 수 있고(rollback), 프로젝트를 통째로 되돌리거나 시간(time)에 따라 수정 내용을 비교해 볼 수도 있다. 또한 문제, 이슈 발생 시 누가 만들어낸 것인지 추적할 수 있으며 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.

VCS는 다음과 같은 종류로 세분화 된다.

로컬 버전 관리(LVCS – Local VCS)

LVCS

로컬 버전 관리(LVCS)는 로컬 컴퓨터의 간단한 데이터베이스를 사용해서 파일의 변경 정보를 관리한다. 즉, 로컬 컴퓨터 내에서 파일을 관리하는 방식이다.

중앙집중식 버전 관리(CVCS - Central VCS)

CVCS

중앙집중식 버전 관리(CVCS)는 파일을 관리하는 중앙 집중 서버가 따로 존재하고, 클라이언트에서 중앙 서버의 파일을 받아 사용(checkout)한다. 이러한 CVCS 환경은 누가 무엇을 하고, 무엇을 할지 꼼꼼히 관리할 수 있다. 그리고 모든 클라이언트의 로컬 데이터베이스를 관리하는 것 보다 CVCS 하나를 관리하는 것이 훨씬 쉽다. 하지만, 몇 가지 치명적인 결함이 존재한다. 만약 중앙 서버에 문제가 발생하면 아무도 다른 사람과 협업할 수 없으며 백업도 할 수 없다. LVCS와 마찬가지로 이런 문제가 발생하면 모든 데이터를 잃을 수 있다.

분산 버전 관리(DVCS - Distributed VCS)

DVCS

분산 버전 관리(DVCS)는 단순히 파일의 마지막 스냅숏을 사용(checkout)하지 않는다. 저장소를 히스토리와 더불어 통째로 복제한다. 서버에 문제가 생기면 이 복제물(clone)로 다시 작업을 할 수 있다. 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다. 즉, 복제된 저장소는 모든 데이터를 가진 백업이 된다. 또한 리모트 저장소가 존재하여 동시에 다양한 그룹과 협업이 가능하다.

참고  
   변경 관리    소스의 변경 상황을 관리한다. 문서의 변경 이력과 복원 등의 기능이 제공된다.
   버전 관리    프로그램의 변경, 체크인, 체크아웃, 릴리즈, 퍼빌리싱의 과정을 버전으로 관리할 수 있다.
즉, 체계적인 변화 과정을 기록한다.
   형상 관리    변경, 버전 관리가 포함되며, 프로젝트 진행상황, 빌드와 릴리즈 퍼블리싱까지 모두 관리할 수 있는 통합 시스템이다.
   간단 정리    : 변경관리 < 버전관리 < 형상관리 :

참고사이트

  1. Git 공식 홈페이지, https://git-scm.com/book/ko/v2
  2. 코드연구소-티스토리 블로그, https://code-lab1.tistory.com/248