VCS Comparison

버전 관리 시스템(VCS, Version Control System)은 소스 코드의 변경 이력을 추적하고 관리하는 도구이다. 이를 통해 개발자는 코드의 변경 사항을 기록하고, 이전 버전으로의 복원, 병합, 분기 등의 작업을 효율적으로 수행할 수 있다.
VCS는 중앙 집중형(Centralized)과 분산형(Distributed)으로 구분되며, 각각의 시스템은 특정한 아키텍처와 기능을 제공한다. 대표적인 VCS로는 RCS, CVS, SVN, Git, Mercurial 등이 있으며, 각 시스템은 개발 환경과 팀의 요구 사항에 따라 선택된다.

이 시스템들은 시간적으로 진화해왔으며, 각기 다른 아키텍처와 접근 방식을 가지고 있다. RCS는 1980년대 초에 등장한 가장 초기의 시스템으로 단일 파일의 버전 관리에 중점을 두었다. CVS는 RCS를 기반으로 하되 다중 파일과 다중 개발자 지원을 추가했다. SVN은 CVS의 제한사항을 극복하기 위해 개발되었으며, 디렉토리 구조 관리와 원자적 커밋을 도입했다.

2000년대 중반 이후로는 분산 버전 관리 시스템(DVCS)인 Git과 Mercurial이 등장하여 중앙 서버 의존성 없이 로컬에서의 완전한 이력 관리가 가능해졌다. 이러한 분산형 접근 방식은 오프라인 작업, 빠른 브랜칭과 병합, 그리고 오픈 소스 프로젝트의 협업에 혁신을 가져왔다.

시대별 버전 관리 시스템 발전과 특징

버전 관리 시스템은 RCS에서 시작하여 CVS, SVN을 거쳐 Git과 Mercurial로 진화해왔다:

1
2
3
4
RCS (1982) → CVS (1986-90s) → SVN (2000) → Git/Mercurial (2005)
   ↑             ↑               ↑               ↑
파일 단위      다중 사용자      원자적 커밋     분산식 구조
로컬 저장      중앙 저장소     디렉토리 관리    강력한 브랜칭

각 시스템은 이전 시스템의 한계를 극복하며 발전해왔으며, 현대의 소프트웨어 개발 환경에서는 Git이 가장 지배적인 위치를 차지하고 있다.

구분RCSCVSSVNGitMercurial
출시 연도19821986-90s200020052005
개발자/조직Walter F. TichyDick Grune, Brian BerlinerCollabNet, Apache리누스 토르발스Matt Mackall
아키텍처 유형로컬 파일 기반중앙 집중식중앙 집중식분산형분산형
주요 특징파일별 버전 관리, 역델타 저장다중 개발자 지원, 복사-수정-병합 모델원자적 커밋, 디렉토리 버전 관리스냅샷 저장, SHA-1 해시, 강력한 브랜칭revlog 구조, 확장성, 직관적 CLI
역사적 의의최초의 체계적 버전 관리 시스템RCS의 한계 극복, 프로젝트 단위 관리CVS의 제한사항 개선, 엔터프라이즈 환경 최적화Linux 커널 개발용, BitKeeper 대체BitKeeper 대체, 사용성 강조
현재 상태레거시거의 사용 안 함여전히 사용됨지배적활발히 사용됨

아키텍처 및 기술적 특성

구분RCSCVSSVNGitMercurial
물리적 저장 구조,v 확장자 파일RCS 파일 기반FSFS/BDB 백엔드객체 데이터베이스리비전 로그
저장 방식역방향 델타역방향 델타델타스냅샷델타+매니페스트
델타 방향역방향(최신→과거)역방향(최신→과거)양방향 델타스냅샷 기반양방향 델타
식별자 체계파일별 버전 번호파일별 버전 번호전역 리비전 번호SHA-1 해시SHA-1 해시/리비전 번호
구현 언어CCCC, 쉘 스크립트Python, C
커밋 단위파일 단위파일 단위저장소 단위(원자적)스냅샷 단위체인지셋 단위
잠금 메커니즘강제 잠금선택적 잠금선택적 잠금낙관적 동시성낙관적 동시성
충돌 해결 방식잠금으로 방지수동 병합자동/수동 병합자동/수동 병합자동/수동 병합
메타데이터 저장파일 내장파일 내장저장소 내장객체 메타데이터매니페스트
파일 시스템 연동직접 통합작업 복사본작업 복사본작업 트리/인덱스작업 디렉토리
스토리지 효율성단일 파일 효율적중간효율적매우 효율적매우 효율적
이력 수정 지원일부 지원제한적미지원전체 지원제한적
데이터 무결성제한적제한적체크섬SHA-1 해시SHA-1 해시

기능 및 특성 비교

기능/특성RCSCVSSVNGitMercurial
원자적 커밋단일 파일만아니오
디렉토리 버전 관리아니오제한적
오프라인 작업로컬만아니오제한적완전 지원완전 지원
브랜칭 용이성없음어려움중간매우 쉬움쉬움
브랜치 구현 방식없음파일 태그디렉토리 복사포인터네임스페이스
익명 브랜치미지원미지원미지원지원지원
머지 용이성어려움제한적중간강력함강력함
파일 이동/이름 변경 추적불가불가가능추론 기반명시적 추적
속도빠름(로컬)느림중간매우 빠름빠름
대용량 파일 처리비효율적비효율적효율적비효율적(LFS 별도 필요)비효율적(확장 필요)
학습 곡선낮음낮음중간높음중간
명령어 일관성높음중간높음낮음높음
확장성매우 제한적제한적중간매우 높음높음(플러그인)
커뮤니티 지원(2025)없음거의 없음중간매우 활발활발
시장 점유율(2025)없음매우 낮음낮음매우 높음중간~낮음
단일 파일 작업 속도매우 빠름빠름보통매우 빠름빠름
대규모 저장소 처리미지원느림보통빠름빠름
네트워크 효율성해당 없음낮음중간높음높음
브랜치 전환 속도빠름느림느림매우 빠름빠름
히스토리 조회 속도빠름느림보통매우 빠름빠름
저장 공간 효율성중간낮음높음매우 높음높음
최대 저장소 크기단일 파일제한적대형(TB)대형(GB~TB)대형(GB~TB)
최대 파일 크기중간제한적제한적(2GB)제한적(2GB)
클라이언트 리소스 요구매우 낮음낮음중간높음중간
서버 리소스 요구없음낮음중간선택적선택적

협업 및 워크플로우

특성RCSCVSSVNGitMercurial
이력 추적 가능성기본적제한적좋음매우 좋음좋음
분기/병합 용이성매우 어려움어려움중간매우 쉬움쉬움
동시성 제어잠금 기반복사-수정-병합복사-수정-병합복사-수정-병합복사-수정-병합
동시 개발자 지원단일 개발자제한적좋음매우 좋음매우 좋음
협업 모델단일 개발자중앙 서버 기반중앙 서버 기반분산 협업분산 협업
브랜치 전략없음제한적기능별 브랜치 최소화다양한 워크플로우책임 분리 브랜치
병합 충돌 해결수동수동수동 해결자동+수동3-way 머지
코드 리뷰 통합미지원제한적제한적매우 좋음좋음
이슈 트래커 통합미지원제한적제한적매우 좋음좋음
CI/CD 통합미지원제한적좋음매우 좋음좋음
작업 모델체크아웃-수정-커밋체크아웃-수정-커밋체크아웃-수정-커밋복제-수정-스테이징-커밋-푸시복제-수정-커밋-푸시
비개발자 접근성낮음낮음중간낮음중간

보안 및 무결성 비교

특성RCSCVSSVNGitMercurial
데이터 무결성 검증제한적제한적체크섬SHA-1 해시SHA-1 해시
접근 제어파일 시스템기본적세밀한 제어저장소 수준저장소 수준
감사 추적기본적기본적상세함상세함상세함
디지털 서명미지원미지원선택적지원지원
암호화 전송미지원선택적지원지원지원
이력 변조 방지제한적제한적좋음매우 좋음좋음
접근 로깅미지원제한적상세함제한적제한적
보안 취약점 수적음많음중간적음적음
권한 위임 모델없음기본적상세함제한적제한적
권한 관리 세분화미지원제한적매우 세밀함제한적제한적

사용 편의성 및 학습 곡선 비교

특성RCSCVSSVNGitMercurial
명령어 일관성좋음중간좋음낮음매우 좋음
기본 명령어 수적음중간중간많음중간
CLI 사용자 경험기본적기본적좋음복잡함좋음
GUI 도구 지원거의 없음제한적좋음(TortoiseSVN)매우 좋음좋음(TortoiseHg)
IDE 통합제한적제한적좋음매우 좋음좋음
문서화 품질기본적중간좋음매우 좋음좋음
교육 자료 가용성제한적제한적좋음매우 좋음좋음
오류 메시지 명확성낮음낮음중간낮음좋음
초보자 접근성낮음낮음중간낮음중간
전문가 유연성제한적제한적좋음매우 좋음좋음
학습 곡선낮음낮음중간높음중간

플랫폼 및 환경 지원 비교

특성RCSCVSSVNGitMercurial
Windows 지원제한적중간매우 좋음좋음매우 좋음
Linux/Unix 지원매우 좋음매우 좋음매우 좋음매우 좋음매우 좋음
macOS 지원좋음좋음매우 좋음매우 좋음매우 좋음
윈도우 통합제한적제한적좋음(TortoiseSVN)중간좋음(TortoiseHg)
클라우드 호스팅미지원제한적좋음매우 좋음좋음
모바일 지원미지원미지원제한적좋음제한적
웹 인터페이스미지원제한적좋음매우 좋음내장
대형 파일 처리제한적제한적좋음제한적(LFS)제한적(largefiles)
언어 지원CCCC, 쉘 스크립트Python, C
확장성제한적제한적훅 스크립트훅, 필터Python 확장

주요 원리 및 작동 원리

RCS의 작동 원리

RCS는 델타 인코딩 방식을 사용하여 파일의 변경 사항만 저장한다. 가장 최신 버전을 기준으로 이전 버전으로 가는 역방향 델타(reverse delta)를 저장한다. 파일을 편집하려면 먼저 잠금을 획득해야 하며, 이는 단일 파일에 대한 단일 작업자 모델을 강제한다.

1
2
[원본 파일] <-- [델타 1] <-- [델타 2] <-- … <-- [델타 n]
(최신 버전)                                     (최초 버전)

CVS의 작동 원리

CVS는 RCS를 기반으로 하되, 프로젝트 전체를 관리할 수 있도록 확장되었다. 중앙 저장소와 작업 복사본 개념을 도입하여 여러 개발자가 동일한 파일에서 작업할 수 있게 했다. 변경 사항은 파일 단위로 추적되며, 커밋 시 충돌이 감지되면 사용자가 수동으로 해결해야 한다.

1
2
3
4
5
6
[중앙 저장소]
     /|\
    / | \
   /  |  \
[개발자 1] [개발자 2] [개발자 3]
작업 복사본  작업 복사본  작업 복사본

SVN의 작동 원리

SVN은 중앙 집중식 모델을 유지하면서도 프로젝트 전체에 대한 원자적 커밋을 도입했다. 각 커밋은 전체 저장소에 대한 새로운 스냅샷을 생성하며, 순차적으로 증가하는 리비전 번호가 할당된다. SVN은 델타 저장 방식을 사용하여 공간을 절약하며, 복사와 이동 작업을 효율적으로 처리한다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[SVN 저장소]
  |
  +-- 리비전 1
  |     |
  |     +-- 파일/디렉토리 상태
  |
  +-- 리비전 2
  |     |
  |     +-- 변경된 파일/디렉토리 상태
  |
  +-- …

Git의 작동 원리

Git은 콘텐츠 주소 지정 파일 시스템을 기반으로 하는 분산형 모델을 사용한다. 모든 변경 사항은 SHA-1 해시로 식별되는 객체(블롭, 트리, 커밋, 태그)로 저장된다. 각 커밋은 프로젝트 상태의 스냅샷을 참조하며, 모든 개발자가 전체 이력을 로컬에 가지고 있다. 이러한 구조는 브랜칭과 병합을 매우 효율적으로 만든다.

1
2
3
4
5
6
7
8
9
[객체 데이터베이스]
  |
  +-- 블롭 (파일 내용)
  |
  +-- 트리 (디렉토리 구조)
  |
  +-- 커밋 (메타데이터 + 트리 참조)
  |
  +-- 참조 (브랜치, 태그 등)

Mercurial의 작동 원리

Mercurial도 분산형 모델을 사용하지만, 구현 방식은 Git과 다르다. 체인지셋(changeset) 개념을 중심으로 이력을 관리하며, 리비전 로그(revlog) 구조를 사용하여 효율적인 저장과 접근을 제공한다. 파일 내용과 메타데이터는 분리되어 저장되며, 이력은 방향성 비순환 그래프(DAG)로 표현된다.

1
2
3
4
5
6
7
8
9
[Mercurial 저장소]
  |
  +-- 매니페스트 (파일 목록 및 참조)
  |
  +-- 파일 리비전 로그
  |
  +-- 체인지셋 저장소
  |
  +-- 브랜치/태그 메타데이터

구성 요소 및 아키텍처

RCS의 구성 요소

  1. RCS 파일(.v):
    • 기능: 원본 파일과 델타를 저장
    • 역할: 버전 간 차이 및 메타데이터 관리
  2. 잠금 파일(.LCK):
    • 기능: 파일 잠금 상태 표시
    • 역할: 동시 편집 방지
  3. 명령어 인터페이스:
    • 기능: ci(체크인), co(체크아웃), rlog(이력 조회) 등 제공
    • 역할: 사용자와 RCS 시스템 간 상호작용
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
[RCS 아키텍처]
+----------------+
| 사용자 인터페이스 |
+----------------+
         |
+----------------+
|  RCS 명령어     |
| (ci, co, rlog) |
+----------------+
         |
+----------------+
| RCS 파일 관리   |
+----------------+
         |
+----------------+
| 델타 저장/복원   |
+----------------+

CVS의 구성 요소

  1. 저장소(Repository):
    • 기능: 모든 프로젝트 파일 및 이력 저장
    • 역할: 중앙 데이터 관리
  2. 작업 복사본(Working Copy):
    • 기능: 개발자의 로컬 파일 사본
    • 역할: 개발 작업 공간 제공
  3. 모듈(Module):
    • 기능: 프로젝트 하위 디렉토리 그룹화
    • 역할: 논리적 단위로 관리
  4. 클라이언트-서버 프로토콜:
    • 기능: 네트워크 통신 지원
    • 역할: 원격 작업 가능
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[CVS 아키텍처]
+----------------+      +----------------+
| CVS 클라이언트  | <--> | CVS 서버       |
+----------------+      +----------------+
| 작업 복사본     |      | 중앙 저장소     |
+----------------+      +----------------+
| 명령어 처리     |      | 버전 데이터베이스|
+----------------+      +----------------+
                          |
                        +----------------+
                        | RCS 파일 시스템 |
                        +----------------+

SVN의 구성 요소

  1. 저장소(Repository):
    • 기능: 중앙 데이터 저장소
    • 역할: 모든 버전과 이력 보관
  2. 작업 복사본(Working Copy):
    • 기능: 로컬 파일 사본
    • 역할: 개발 작업 공간 제공
  3. 리비전(Revision):
    • 기능: 저장소 전체 상태의 스냅샷
    • 역할: 변경 이력 추적
  4. 저장소 백엔드(FSFS/BDB):
    • 기능: 데이터 물리적 저장
    • 역할: 효율적인 데이터 관리
  5. 접근 계층(HTTP/SVN 프로토콜):
    • 기능: 저장소 접근 방법 제공
    • 역할: 다양한 네트워크 환경 지원
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
[SVN 아키텍처]
+-------------------+      +-------------------+
| SVN 클라이언트     | <--> | SVN 서버          |
+-------------------+      +-------------------+
| 작업 복사본 관리   |      | 접근 계층(HTTP/SVN)|
+-------------------+      +-------------------+
| 충돌 해결         |      | 트랜잭션 처리      |
+-------------------+      +-------------------+
                             |
                           +-------------------+
                           | 저장소 액세스 계층  |
                           +-------------------+
                             |
                           +-------------------+
                           | 저장소 백엔드      |
                           | (FSFS/BDB)        |
                           +-------------------+

Git의 구성 요소

  1. 객체 데이터베이스:
    • 기능: 블롭, 트리, 커밋, 태그 저장
    • 역할: 콘텐츠 주소 지정 저장소 제공
  2. 인덱스(Staging Area):
    • 기능: 커밋 예정 변경 사항 관리
    • 역할: 선택적 커밋 가능
  3. HEAD 포인터:
    • 기능: 현재 브랜치의 최신 커밋 참조
    • 역할: 작업 위치 지정
  4. 참조(References):
    • 기능: 브랜치, 태그 등 이름 지정
    • 역할: 개발 라인 관리
  5. 작업 디렉토리:
    • 기능: 실제 파일 작업 공간
    • 역할: 개발 환경 제공
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
[Git 아키텍처]
+-------------------+
| 작업 디렉토리      |
+-------------------+
           |
+-------------------+
| 인덱스(Staging)    |
+-------------------+
           |
+-------------------+
| 로컬 저장소        |
+-------------------+
| - 객체 DB         |
| - 참조            |
| - HEAD           |
+-------------------+
           |
+-------------------+
| 원격 저장소(선택적) |
+-------------------+

Mercurial의 구성 요소

  1. 리비전 로그(Revlog):
    • 기능: 파일 변경 이력 저장
    • 역할: 효율적인 델타 압축 제공
  2. 매니페스트(Manifest):
    • 기능: 각 리비전의 파일 목록 유지
    • 역할: 프로젝트 구조 관리
  3. 체인지셋(Changeset):
    • 기능: 프로젝트 상태 스냅샷
    • 역할: 변경 단위 관리
  4. 디렉토리 캐시:
    • 기능: 디렉토리 구조 추적
    • 역할: 파일 시스템 매핑
  5. 확장 시스템:
    • 기능: 추가 기능 제공
    • 역할: 기본 기능 확장
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
[Mercurial 아키텍처]
+-------------------+
| 작업 디렉토리      |
+-------------------+
           |
+-------------------+
| 로컬 저장소        |
+-------------------+
| - 매니페스트       |
| - 체인지셋 저장소   |
| - 파일 리비전 로그  |
| - 브랜치/태그      |
+-------------------+
           |
+-------------------+
| 확장 시스템        |
+-------------------+
           |
+-------------------+
| 원격 저장소(선택적) |
+-------------------+

주요 사용 사례 및 사용자

버전 관리 시스템적합한 사용 사례주요 사용자/프로젝트
SVN• 엄격한 액세스 제어 필요 환경
• 대용량 바이너리 파일 많은 프로젝트
• 간단한 워크플로 선호 팀
• 중앙 집중식 관리 정책 필요 기업
• Apache Software Foundation
• 많은 기업 내부 시스템
• 일부 게임 개발사
• 과거 SourceForge 프로젝트
Git• 오픈 소스 프로젝트
• 분산된 개발 팀
• 복잡한 브랜칭 전략 필요 시
• 오프라인 작업 필요 시
• DevOps 및 CI/CD 파이프라인 통합
• Linux 커널
• 대부분의 오픈 소스 프로젝트
• GitHub/GitLab의 대부분 프로젝트
• 대다수 소프트웨어 기업
Mercurial• Git의 복잡성이 부담스러운 팀
• Python 기반 프로젝트
• 일관된 크로스 플랫폼 경험 중시
• 기업 내부 사용
• Mozilla
• Facebook(부분적)
• OpenJDK(과거)
• Unity(과거)

엔터프라이즈 Vs 오픈소스 도구 선택 가이드

고려 요소엔터프라이즈 솔루션오픈 소스 솔루션권장 상황
라이선스 비용라이선스/사용자당 비용무료/기부 모델예산 제약 시 오픈소스, 엔터프라이즈 지원 필요 시 상용
기술 지원공식 지원 및 SLA커뮤니티 지원미션 크리티컬 시스템은 공식 지원, 일반 개발은 커뮤니티 지원
확장성대규모 팀/코드베이스 최적화다양한 크기 지원대규모 조직은 확장성 테스트 후 선택
통합 기능내장된 CI/CD, 이슈 관리플러그인/확장 통합통합 생태계 중요 시 해당 통합 지원 확인
보안 기능감사, 컴플라이언스 기능기본/확장 보안규제 산업은 보안 인증된 상용 솔루션
사용자 인터페이스통합 GUI/관리 도구다양한 도구/플러그인GUI 중심 작업은 통합 인터페이스 상용 솔루션
커스터마이징제한적/벤더 의존적완전 커스터마이징특수 요구사항 많은 경우 오픈소스
학습 곡선교육/문서 제공커뮤니티 문서/튜토리얼신규 팀은 교육 지원 고려
배포 옵션관리형/온프레미스자체 호스팅/클라우드인프라 관리 역량에 따라 선택
바이너리 파일 처리최적화된 바이너리 처리제한적/확장 필요대용량 미디어 파일 관리 시 바이너리 최적화 솔루션
성능대규모 최적화기본 성능, 자체 튜닝 필요성능 중요 시 벤치마크 테스트
백업/재해 복구내장 솔루션수동/타사 도구 필요중요 데이터는 검증된 백업 솔루션
규정 준수감사 추적, 컴플라이언스추가 구성 필요규제 산업은 컴플라이언스 인증 솔루션
지속적인 발전로드맵 기반 발전커뮤니티 주도 발전특정 기능 필요 시 로드맵 확인
벤더 종속성높음낮음장기적 운영 유연성 중요 시 오픈소스

주요 엔터프라이즈 버전 관리 솔루션:

  • Perforce Helix Core: 대용량 바이너리 처리 최적화, 게임/미디어 산업 인기
  • Microsoft Azure DevOps: Microsoft 생태계 통합, CI/CD 파이프라인 내장
  • IBM Rational ClearCase: 엔터프라이즈급 확장성, 추적성, 규제 산업 대응
  • Bitbucket Data Center: Atlassian 도구 통합, 확장성 중심
  • GitLab Enterprise: DevOps 생태계 통합, 자체 호스팅 지원

인기 오픈소스 버전 관리 솔루션:

  • Git: 가장 널리 사용되는 분산형 버전 관리
  • Subversion(SVN): 중앙 집중식 관리, 세밀한 접근 제어
  • Mercurial: 사용 편의성, Python 기반 확장
  • Fossil: 통합 버그 추적, 위키 포함
  • Bazaar: Canonical 지원, Python 기반

최신 동향

주제설명
Git 우세2025년 기준 Git은 약 94% 시장 점유율로 압도적 우세, SVN은 약 20%, Mercurial은 5% 미만
모노레포 증가대규모 조직에서 모든 코드를 단일 저장소에 관리하는 모노레포 방식 증가
클라우드 네이티브 통합버전 관리 시스템과 클라우드 네이티브 환경의 긴밀한 통합
GitOps 확산인프라를 코드로 관리하는 GitOps 방식 보편화
AI 기반 도구코드 병합, 충돌 해결, 커밋 메시지 생성을 위한 AI 도구 등장
하이브리드 접근법Git의 단점 보완을 위한 하이브리드 솔루션 등장

주목해야 할 기술들

주제설명
VCS와 AI 통합충돌 예측, 자동 병합, 품질 검사에 AI 활용
분산 데이터 처리대용량 저장소를 위한 분산 데이터 처리 기술
암호화 VCS저장소 전체 암호화 지원 시스템
블록체인 기반 VCS불변성 보장을 위한 블록체인 기술 도입
언어 인식 병합 도구프로그래밍 언어 문맥을 이해하는 지능형 병합 도구
실시간 협업 통합VS Code Live Share 같은 실시간 협업 기능 통합

앞으로의 전망

주제설명
Git 생태계 성숙Git 기반 도구 및 워크플로우의 지속적 성숙
레거시 시스템 공존SVN, CVS 등은 특정 산업 및 레거시 시스템에서 지속 사용
하이브리드 인프라멀티 VCS 환경을 위한 통합 관리 솔루션 발전
보안 중심 발전공급망 보안 강화를 위한 기능 확대
IDE 통합 심화버전 관리 시스템과 IDE의 더 깊은 통합
자동화 수준 향상CI/CD 파이프라인과의 더 깊은 통합 및 자동화

용어 정리

용어설명
델타 인코딩두 버전 간의 차이만을 저장하는 방식으로, 전체 파일을 저장하는 대신 변경된 부분만 저장하여 공간 효율성을 높임
원자적 커밋모든 변경 사항이 하나의 불가분의 트랜잭션으로 처리되어, 전체가 성공하거나 전체가 실패하는 특성
작업 복사본중앙 저장소에서 체크아웃한 로컬 파일 복사본으로, 개발자가 직접 작업하는 공간
리비전버전 관리 시스템에서 특정 시점의 저장소 상태를 식별하는 번호나 해시
브랜치메인 개발 라인에서 분기하여 독립적으로 개발할 수 있는 별도의 버전 라인
병합서로 다른 브랜치의 변경 사항을 하나로 통합하는 과정
충돌둘 이상의 변경 사항이 동일한 코드 부분을 다르게 수정했을 때 발생하는 상황
체크아웃저장소에서 특정 버전의 파일이나 프로젝트를 로컬 작업 영역으로 가져오는 작업
커밋변경 사항을 저장소에 기록하는 작업 또는 그 결과물
태그특정 리비전에 이름을 부여하여 중요한 시점(예: 릴리스)을 표시하는 방법
특정 이벤트(예: 커밋, 푸시) 전후에 자동으로 실행되는 스크립트
리베이스한 브랜치의 변경 사항을 다른 브랜치의 최신 상태 위에 다시 적용하는 과정
체리픽특정 커밋만 선택적으로 다른 브랜치에 적용하는 작업
스태싱현재 작업 중인 변경 사항을 임시로 저장하여 나중에 다시 적용할 수 있게 하는 기능
모노레포여러 프로젝트나 구성 요소를 단일 저장소에서 관리하는 방식

참고 및 출처