정의
소프트웨어 개발에서 코드와 관련된 산출물의 변경을 체계적올 관하고 추적하는 프로세스
여러명의 개발자가 공동 작업을 하더라도 코드의 일관성을 유지, 변경 이력을 기록
불변성
- 모든 변경 사항이 정확하게 추적되고, 변경 이력이 조작되지 않아야 한다.
- 불변성은 시스템의 신뢰성을 높이고, 문제가 발생했을 때 원인을 쉽게 파악할 수 있다.
- 모든 커밋을 고유한 해시를 가지며, 이전 커밋과의 연속성을 유지 때문에 수정이 어려워짐
폴더를 이용한 형상관리
- 일반적으로 프로젝트 파일과 폴더의 구조를 관리
- 폴더 구조는 파일의 논리적인 조직을 나타내며, 변경 사항을 추적하고 관리하기 용이
BitKeeper
- 분산 버전 관리 시스템의 초기 구현 중 하나
- Linus Torvalds가 Git을 개발하기 전에 리눅스 커널 프로젝트에서 사용
- 분산관리 : 코드 저장소를 분산된 형태로 관리하여 각 개발자가 독립적인 브랜치를 가질 수 있음
- 변경 이력 추적 : 변경 사항의 이력을 체계적으로 관리하여 문제 해결과 코드 품질 유지에 도움
- 고속 운용 : 대규모 프로젝트에서도 빠르게 동작할 수 있도록 설계
형상 관리의 장점
- 협업 효율성 증가 : 여러명의 개발자가 동시에 작업할 수 있으며, 각자의 작업을 효과적으로 관리할 수 있다.
- 변경 이력 추적 : 언제 누가 무엇을 변경했는지 추적할 수 있어, 문제 발생 시 원인을 쉽게 파악
- 백업 및 복구 용이 : 특정 시점의 상태로 코드를 복원할 수 있어, 오류 발생 시 쉽게 대응
- 품질 향상 : 체계적인 관리로 인해 코드 품질이 향상되고, 릴리스 과정에서 발생할 수 있는 문제를 최소화할 수 있다.
- 릴리스 관리 : 안정적인 버전을 생성하고 배포를 체계적으로 관리
Git을 이용한 형상관리의 기본 흐름
- git init : 저장소 초기화
- git add : 변경 사항 추가
- git commit : 변경사항을 저장소에 기록
- git pull : 원격 저장소 내려받기
- git push : 원격 저장소에 올리기
- git remote add : 원격 저장소 연결하기
- git checkout : 브랜치 만들고 변경
- git merge : 브랜치 병합하기
- git rebase : 브랜치 커밋 기록을 다른 브랜치의 끝으로 이동
Share article