2022-01-26 작성

Git이란? (feat. Git의 브랜치 전략)

버전 관리 시스템은 크게 2가지 방식이 있다. 과거에는 중앙집중식 위주로 버전을 관리하다가, 요새는 분산식으로 많이 이용하는 추세이다. 분산식 버전관리의 대표적인 예가 바로 Git 이다. 

  • 중앙집중식 (Central Control System) : CVS, Subversion
  • 분산식 (Dynamic Control System) : Git

 


중앙집중식
은 중앙 서버에서 별도로 파일을 관리한다. 클라이언트는 중앙 서버에서 파일을 받아서 사용(checkout)하는데 만약 중앙 서버가 다운되면 답이 없다(..)

반면 분산식은 클라이언트는 저장소를 전부 복제한다. 그래서 서버가 다운되어도 이 복제물로 다시 작업을 시작할 수 있다. 즉, 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다. 게다가 Github 같은 원격 저장소를 이용할 수 있어서, 보다 효율성있게 파일 관리가 가능하다.

Git 이란?

Git은 2005년 리누스 토발즈가 만든 분산식 버전관리 시스템이다. 중앙집중식보다 속도가 빠르고 효율적으로 개발할 수 있다. 여러개의 branch로 쪼개지고 merge로 병합하면서 하나의 프로젝트를 완성시키는 것이 Git 이다.

Gitflow : Git의 브랜치 전략

Gitflow는 Git branch의 관리전략 중 하나이다. 아래 사진이 Gitflow의 예시인데, 효율적으로 소스를 관리하기 위해 목적에 맞는 브랜치로 쪼갠 모습이다.

  • 최초로 init을 실행하면 Master 브랜치가 된다. 이는 언제든지 릴리즈가 가능한 상태여야 한다. 
  • Hotfix 브랜치는 Master 브랜치에서 결함이 발견되었을 경우, 결함을 수정한 후 Master 브랜치와 병합한다. 
  • Release 브랜치는 Master 브랜치와 Develop 브랜치로 병합된다. 
  • Develop 브랜치에서는 말 그대로 실제 개발을 하는 브랜치이다. 
  • Feature 브랜치는 신규 기능을 추가할 때 사용된다.

예를 들어, Develop 브랜치에서 개발을 진행하다가 Feature 브랜치와 병합하고, Develop 브랜치에서 Release 브랜치로 이동해서 작업 후 Release 브랜치가 완성되면 Master 브랜치와 Develop 브랜치 양 쪽에 커밋되는 흐름이다.

Git의 동작원리

  • 스냅샷(Snapshot) : 데이터를 가져오거나 프로젝트를 저장할 때마다 그 시점의 파일에 대해서 스냅샷을 저장한다. 변경되지 않은 파일은 다시 파일을 저장하지 않고 이전에 지정한 동일한 파일을 링크한다.(파일을 복사하지 않음. 파일 저장공간 사이즈가 작음)
  • 체크섬(checksum) : 데이터를 저장하기 전, 파일에 대한 체크섬을 구하고 이 체크섬을 통해 데이터를 관리한다. SHA-1 해쉬를 용하며, 커밋을 복원할 때 앞의 6자리를 알면 이 커밋으로 돌아갈 수 있다. 파일명이 아닌 컨텐츠의 해쉬 값을 저장하므로, 파일명이 변경되도 내용이 동일하면 같은 해쉬이다.
  • 섹션(Sections) : 데이터는 Working Directory, Staging Area, Repository로 나뉘어서 저장된다.

Git 설치

Git을 사용해서 소스를 관리하기 위해서는 아래의 두가지 방법이 있다.

  • SourceTree라는 Git GUI 툴을 이용한 Git
  • Git Bash를 이용한 Git

Git 설정 파일

  • 시스템 전역경로 : C:\Program Files\Git\mingw64\etc\gitconfig 파일
  • 사용자 디렉토리 : C:\Users\사용자\.gitconfig 파일
  • 워킹 디렉토리 경로 : 워킹 디렉토리/.git/config

Git 설정 파일은 위 3가지 경로에서 확인할 수 있다.

References