컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 스냅샷 스트림 기반의 분산 버전 관리 시스템이다.
소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만, 어떠한 파일 집합의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다.
처음 개발한 사람은 '리누스 토르발스'이다. 리눅스 커널을 관리하는 기존 툴이 엉망인 것에 너무 불편함을 느끼는 바람에 직접 소스관리 툴을 만들고, 그 것이 현재 널리 알려진 분산형 버전 관리 시스템(VCS)인 Git이다.
1) 로컬저장소
: Git은 기본적으로 '로컬저장소' 라는 이름으로 전체 데이터를 작업 폴더에 넣어 관리한다.
이 로컬저장소는 해당 작업자의 작업을 버전별로 저장하고 관리하는 중간 관리 역할도 하면서, 동시에 해당 작업자와 다른 작업자의 작업을 '각기 다른 사람의 로컬 저장소' 로 다원화 하는 역할도 가지고 있다.
짧게 '로컬(local)' 이라고 칭하기도 한다.
2) 원격저장소
: 로컬저장소에서 작업이 끝나면 해당 작업에 참여한 사람과 공유하는 목적과 동시에 작업물을 더욱 안전하게 보관하기 위해 재발행이 필요하다.
이 때 발행처는 '원격 저장소' 이며, 짧게 '리모트(remote)' 라고 불리운다.
3) 브랜치(branch)
: 모든 작업물이 모여 만들어진 최종 작업물을 보통 'main' 이라고 부른다.
이 main을 만들기 위해 기능 혹은 작업자 단위로 나누어 서로가 격리된 상태로 따로 개발 할 수 있는데 이를 'branch' 라고 부른다.
branch는 개발이 완료될 시 main과 합치고 해당 branch는 삭제시키는 가지치기를 할 수 있다.