1. Git 이란 ?

 

- 처음 간단하게 알고 있던 Git은 나의 소스 코드를 저장해놓는 저장소 정도 였다.

- 뭐 저 용도로만 사용할 수도 있긴 하겠지만 Git에 대해 제대로 알아보자.

 

- 사실, Git 이란 Version Control System의 한 종류 이다 (VCS)

 

- 버전 관리 시스템이라고 하는데, 버전을 관리한다는 것은 말그대로

- 프로젝트 소스의 초창기 버전, 수정 버전(V2), 재수정 버전(V2), 최종 버전(FINAL)

- 이런식으로 여러파일들을 하나의 버전으로 묶어 관리하는 것.

 

 

1 - 1 그래서 Version Control System(버전 관리 시스템) 이 무엇이냐?

- 위의 예시처럼 파일을 관리하는 것( 관리가 어려움, 명칭에 따른 혼동 등... 여러가지 문제점 내포 )을

   전문적으로 관리하는 시스템이 버전 관리 시스템 이다.

 

    -(1) 클라이언트-서버 모델

         - 중앙서버가 존재, 자신의 파트만 가져와서 작업후 다시 중앙서버로 통합.

 

    -(2) 분산 모델

         - 중앙서버가 존재, 그러나 여러 클라이언트들은 각자의 로컬 저장소에 중앙서버의 전체 사본을 가지고 작업 후

           통합하는 것

         - Git이 이에 해당 한다.

 

 

 

 

2. Git의 사용

 

- 사실 혼자 작업한다면 사본을 만들어 놓고 개인이 관리 하면서 작업을 수행한다면 굳이 필요가 없을 수도 있다.

   (수정이나 작업을 하는 사람이 본인 뿐이므로 시간적인 충돌등이 발생할 일도 없다.)

 

- 그러나 만약 다수의 클라이언트들이 작업을 수행하고 그것을 원본에 업데이트를 해야 하는데

   동시에 수정과 다운로드 작업이 일어나거나 한다면 문제가 생긴다.

   (예를 들면 내가 수정을 업로드 하는 동시에 다른 클라이언트가 작업을 위해 그 페이지를 건드린다면

    나의 수정사항이 제대로 반영되지 않을 수 있는 등의 문제가 발생 할 수 있다.)

 

- 이러한 문제점을 방지해주는 것이 버전관리 시스템이다(git,....)

 

- 그리고 깃은 모든 변동사항의 스냅샷을 저장하므로 코드의 손실이 일어나지 않고 문제시

   그 이전의 시점으로 되돌릴 수도 있다.(병렬 개발이 가능해 진다.)

 

- 그러므로 다수와 함께하는 프로젝트를 진행할 때 Git은 거의 필수적이다.

 

- 물론 개인프로젝트의 경우도 git으로 버전관리를 진행하면서 수행하면하면 체계적인 개발이 가능하다.

  (프로그램 을 배포하고나 패치를 배포하는 것도 간단해진다.)

 

 

 

 

 

3. Git의 웹 기반 솔루션 

 

- Git의 원격 저장소를 편하고 효율적으로 관리할 수 있게 하는 것이 웹기반 Git 솔루션을 사용하는 것.

 

- 요즘은 원격 저장소를 관리하는 기능 뿐 아니라 프로젝트에 도움이 되는 다양한 기능을 제공 하고 있다.

 

- Git Hub, Git Lab 등 이 있는데 깃허브는 오픈소스 프로젝트를 할 때 주로 많이 사용하고,

   깃 랩은 기업체등에서 폐쇄성을 필요로 할 때 인트라넷에서 많이 사용한다.

 

 

 

 

4. Git 사용을 위한 주요용어 정리

 

- 저장소(Repository)

   : 소스코드가 저장되어 있는 물리적인 공간

     깃 에서는 위에서 말씀드렸다 싶이 로컬저장소와 원격저장소 두개로 나누어져 있습니다.

     그러므로 작업을 시작하기 전에 원격저장소에서 로컬저장소로 소스코드를 복사해오고

     그 로컬저장소에서 소스를 가지고와서 소스수정이나 작업이 이루어 집니다.

     수정 후 커밋(commit)을 하면 로컬저장소에 저장(수정) 되며, 푸시(push)를 해야 비로소

     원격저장소에 반영이 되는 것입니다.

     저장소는 브랜치(branch),태그, 커밋에 따라서 버전을 저장한다.

 

 

 

- 스테이지(stage)

     작업한 내용을 올리는 임시 저장영역

      커밋 시에 로컬저장소에 반영이 된다.

 

 

- 커밋(commit)

     스테이지의 내용을 로컬저장소로 저장하는 작업

     커밋 한번,한번이 의미있는 히스토리(history) 이며, 커밋 로그로 설명을 남긴다.

     커밋의 단위는 팀에서 정하며, 대부분 포멧도 정한다.

 

 

- 체크아웃(checkout)

     커밋 단위로 남긴 히스토리 단위의 소스코드 버전으로 이동하거나, 브랜치의

     소스코드로 이동하는 것.

 

 

- 태그(tag)

     커밋의 위치를 알아보기쉽게 태그를 달아 놓는다.

     태그를 달아놓은 커밋은 태그명으로 쉽게 체크아웃이 가능해진다.

 

 

- 푸시(push)

     로컬 저장소에서의 변동(수정) 소스코드를 원격저장소에 반영시키는 것.

 

 

- 풀(pull)

     푸시와 반대되는 작업으로서 원격저장소의 내용을 로컬저장소에 반영시키는 것

 

 

+ Recent posts