Git - 탄생배경/왜

SJ K·2022년 12월 7일

Git

목록 보기
1/4

깃이나오기 전...

폴더별로 버전을 묶어서 하나하나 관리해 왔다. 개선을 하기 위해서 CVS가 등장했다.

  • CVS(Centralized Version Control)
    서버에 히스토리를 관리해서 가가의 개발자들이 원하는 내용을 서버에 업뎃해서 즉각적으로 동기화가 이루어지는 시스템 -> 서버에 문제가 생길때 업뎃이 안됨, 오프라인의 경우에도 일을 못함

  • DVC(Distributed Version Control)
    서버에만 히스토리에 정보가 있는것이 아니라 모든 개발자들이 동일한 히스토리를 가지고 있음 ->서버가 다운되거나 오프라인의 경우에도 가각의 개발자들이 동일한 히스토리를 가지고 있으므로 위의 상황에서도 대처가 가능하다
    -> Private Server(회사나 개인서버)/Cloud Server(github/Bitbucket)

Git

  • 깃이란
    VCS(Version Control System)중에 하나로, 크고 작은 프로젝트를 버전별로 빠르고 편리하게 관리할 수 있도록 도와주는 도구.

    • 탄생배경
      Linux Kernel Team에서 버전관리를 위하여 BITKEEPER을 도입하지만 빗킵퍼측에서 유료선언을 한다. 리눅스측에서 GIT을 만들어서 탄생했다.

      • delta-based
        각각의 버전마다 변경된 내용만 저장 버전별로 달라진 내용만가지고 있어서 버전을 변경할때 개선과 적용하는데 시간이 많이 발생된다.

      • stream of snapshots (GIT이 데이터를 다루는 방식)
        프로젝트의 전체적인 내용을 스냅샵해서 가지고 있다. 전체버전을 가지고 있기때문에 버전이동과 적용이 쉽다. 스냅샷은 변경되지 않은 파일들의 참조(refernce)를 하고있어 굉장히 가볍다.

왜 GIT을 사용할까?

  • 사람들이 가장 많이 사용

  • 오픈소스와 무료

  • Branching and Merging

    • Branching Model
      브랜치는 분기모델이라고 하는데, 원래 코드와는 상관없이 독립적으로 개발을 할 수 있는 작업영역(master)을 말한다.

    • Merging
      여러게의 브랜치를 합치는 것을 Merging이라고 한다.

  • Staging Area

    • 깃의 workflow
      • working directory
        프로젝트의 파일들을 수정, 작업하는 공간
        • untracked
          git에 해당 파일의 정보가 전혀없는 상태의 파일을 untrack이다.
        • tracked
          git의 관리대상이 되거나 추적되고 있는 상태의 파일
          • unmodified
            수정이 되지않은 파일 : 이전버전과 비교해서 수정되지 않음
          • modified
            수정이 된 파일 : 이전버전과 비교해서 수정됨
            modified된 파일들만 staging area에 옮겨갈수있다.
      • staging area
        어느정도 작업하다가 version history에 저장할 준비가 되어있는 파일들을 옮겨놓는 공간.
        commit 명령어를 이용해서 staging area에 있는 파일을 Repository로 (history 생성)옮긴다.
        • commit을 할 경우 생기는 일
          snapshots된 정보들을 기반을 해서 고유한 hash code가 부과되는데, 이걸 통해 버전 정보를 참조할 수 있다.
          뿐만 아니라 아이디, 메세지, 작성자, 날자와 시간도 포함된다.
      • repository/directory
        checkout 명령어를 통해서 version이동이 가능하다.
        version history를 가지고 있는 공간
        • git은 개인 서버를 이용하기 때문에 대부분 git hub, source tree와 같은 서버에 Push라는 명령어를 이용하여 저장해놓는다.
        • 반대의 경우 Pull을 쓴다.

  • 빠른처리
  • 오프라인 작업가능
  • 오류확인과 수정가능
  • 협업을 효율적으로 할수있음

참고
깃, 깃허브 이건 알고 사용하자
깃.깃허브. 기초개념 잡아드림
깃 공식사이트
깃 공식사이트 - 깃에 대한설명

profile
하루하루 알차게

0개의 댓글