Git

[GIT] 버전관리란?

scone 2022. 7. 7. 03:46

[버전 관리 시스템] 

  • 부르는 명칭
    • 형상 관리
    • Configuration Management Systems
    • Version Control Systems (VCS)
  • 버전 관리
    • SOURCE DATA + HISTORY
    • 협업, 작업추적, 복구 등이 가능

 

[GIT 등장 배경] 

예전에는 Source Folder 과 실행파일을 버전별로 카피하여 관리하였었다고 합니다.

하루종일 개발한 코드가 컴퓨터가 다운되면서 날라가는 경우가 부지기수 였다고 하네요.

그래서 처음에 등장한게..

 

  • Local Version Control Systems (최초 모델)

내 컴퓨터에서 관리 가능했지만 하드가 날라가면 전체 코드가 사라지는건 마찬가지였구요

버전은 관리되지만 협업은 여전히 어려운 문제가 있었다고 합니다.

 

  • Centralized Version Control Systems (CVCS)

중앙 서버에서 버전을 관리하고 각 컴퓨터는 파일을 하나씩 가져가서 작업을 합니다. 그리고 작업한 걸 중앙 서버에 올립니다. 이러면 버전 관리도 되고, 협업도 가능하겠죠?

그러나 commit을 하는 순간 베포되어 다수에게 버그 유발하는 문제가 있었고, 인터넷이 안되면 작업이 불가능하다는 점, 자신만의 version history를 가질 수 없다는 한계를 가졌습니다.

 

  • Distributed Version Control Systems (DVCS)

중앙에서도 버전 관리를 하지만, 이 전체를 카피 해와서 내꺼에서도 버전 관리를 합니다.

중앙에 베포하지 않고, 내꺼에서 버전관리를 계속 하다가 준비가 되면 중앙에 공유 해서 싱크를 맞춰줍니다.

이렇게 하면 commit을 하더라도 개인 저장소 내에 적용될 수 있고 (다른 개발자에게 영향이 없습니다.) 원하는 순간에 베포(push)가 가능해지며, 오프라인에서도 작업이 가능하고, 자신만의 version history를 가질 수 있게 되었습니다.

 

=> 이러한 장점으로 인해 따라서 git에서도 현재 Distributed Version Control Systems  사용 되고 있는 중이라고 해요.

 

[버전 관리 시스템 종류] 

  • CVCS - CVC, SVS, ...
  • DVCS - Mercuial, Git, ...

 

  • CVC
    • 1980년대 만들어진 형상관리 시스템
    • commit 중 오류 발생 시 Rollback 이 되지 않는 등의 문제
    • 이후 SVN 으로 대체됨
  • SVN
    • 공식 사이트, 및 다큐멘터리 : https://subversion.apache.org/ 
    • 중앙 관리 이지만, 분산 처리 하는 부분이 많이 적용되어 중앙 관리의 단점이 많이 보완됨 ( 요즘은 Git과 그 사용이 많이 유사하다고 한다. )
    • 2000년대 만들어졌고, 현재까지 두루 사용 중
  • Git
    • 공식 사이트, 및 다큐멘터리 : https://git-scm.com/
    • SVN 보다 빠른 속도와 많은 기능을 지원
    • 현재 많은 기업이 사용 중

 

[GIT 기반의 서비스] 

  • GITHUB
    • https://github.com/Jungtaxi ( 스콘의 깃 주소 입니다. ㅎㅎ)
    • Git을 호스팅 해주는 웹 서비스, 협업을 위한 기능 제공
    • 참고 - 소스코드 보안이 중요한 경우 사용 기피 (클라우드 기반이기 때문에)
  • GITLAB
    • https://gitlab.com
    • 설치형 버전 관리 시스템 : 소스코드 보안이 중요한 회사에서 주로 사용
    • 클라우드 버전 관리 시스템 : 10명 이하 무료 (Github와 유사)
    • Issue tracker, Git Remote Repository, API, Team, Group 기능 제공

 

 

 

이미지 출처 : 

Git 시작하기(블로그), 2016년 8월 3일, https://ho1234c.github.io/2016/10/03/2016-10-03-git/