[Git] 1. Git 개요

2021. 11. 9. 14:04
728x90
반응형

 

Git이란?

Git은 Linux 커널 소스 코드를 관리에 사용하기 위해 Linus Torvalds 가 직접 개발한 분산형 버전 관리 도구이며,

소스코드를 효과적으로 관리하기 위해 개발된, '분산형 버전 관리 시스템' 입니다.

깃(Git)은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.
- 위키백과

 

버전관리란?

여기서 말하는 버전관리란? 파일 변화를 시간에 따라 기록했다가, 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.

우리는 일상생활에서도 꼭 버전관리 시스템을 사용하지 않더라도, 하나의 파일을 버전 혹은 날짜를 기입해서 사용했던 경험이 있을겁니다.

이 또한 버전관리의 일부이다.

 

버전관리 시스템

버전관리 시스템은 크게 두가지로 구분됩니다.

  1. 중앙 집중식 버전관리 시스템 (CVCS)
    • 프로젝트를 진행하다 보면 다른 개발자와 함께 작업해야 하는 경우가 많다. 이럴 때 생기는 문제를 해결하기 위해 CVCS(중앙집중식 VCS)가 개발됐다.
    • CVS, Subversion, Perforce 같은 시스템은 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)한다.
    • 이 CVCS 환경은 몇 가지 치명적인 결점이 있다. 가장 대표적인 것이 중앙 서버에 발생한 문제다. 만약 서버가 한 시간 동안 다운되면 그동안 아무도 다른 사람과 협업할 수 없고 사람들이 하는 일을 백업할 방법도 없다.
    • 그리고 중앙 데이터베이스가 있는 하드디스크에 문제가 생기면 프로젝트의 모든 히스토리를 잃는다.
    • 물론 사람마다 하나씩 가진 스냅샷은 괜찮다. 로컬 VCS 시스템도 이와 비슷한 결점이 있고 이런 문제가 발생하면 모든 것을 잃는다.
    • Subversion, CVS
  2. 분산 버전 관리 시스템 (DVCS)
    • DVCS에서의 클라이언트는 단순히 파일의 마지막 스냅샷을 Checkout 하지 않는다.
    • 그냥 저장소를 히스토리와 더불어 전부 복제한다.
    • 서버에 문제가 생기면 이 복제물로 다시 작업을 시작할 수 있다.
    • 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다.
    • Clone은 모든 데이터를 가진 진정한 백업이다.
    • Git, Mecurial, Bazaar, Darcs

 

Git의 장점

  1. Local 영역과, Remote 영역이 분리되어 관리될 수 있다.
  2. 소스 코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다.(브랜치를 통해 개발한 뒤, 본 프로그램에서 합치는 방식(Merge)으로 개발을 진행할 수 있다.)
  3. 분산 버전 관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있고,중앙 저장소가 날라가 버려도 원상복구할 수 있다.
  4. 팀 프로젝트가 아닌, 개인 프로젝트일지라도 Git을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단해진다.

 

Git 특징

  • 소스코드 주고받기가 필요 없고, 같은 파일을 여려 명이 동시에 작업하는 등 병렬 개발이 가능해지며, 버전 관리가 용이해져 생산성이 증가합니다.
  • 소스코드의 수정 내용이 커밋 단위로 관리되고, 패치 형식으로 배포할 수 있기 때문에 프로그램의 변동 과정을 체계적으로 관리할 수 있고, 언제든지 지난 시점의 소스코드로 Checkout 할 수 있습니다.
  • 새로운 기능을 추가하는 Experimental version을 개발하는 경우, 브랜치를 통해 충분히 실험을 한 뒤 본 프로그램에 합치는 방식(Merge)으로 개발을 진행할 수 있습니다.
  • '분산' 버전관리이기 때문에, 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있으며, 중앙 저장소가 폭파되어도 다시 원상복구할 수 있습니다.

 

 

참고

https://linked2ev.github.io/devlog/2018/08/27/Git-1.-What-is-Git/

https://goddaehee.tistory.com/91

https://git-scm.com/book/ko/v2/시작하기-버전-관리란%3F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts