Git은 파일의 변경 이력을 기록하고 여러 사람이 만든 변경을 합치는 분산 버전 관리 시스템이다. 프로젝트를 복제하면 일반적으로 이력도 로컬에 보관하므로, 네트워크에 연결하지 않은 상태에서도 변경 비교와 커밋 같은 작업을 수행할 수 있다. Git 공식 개요
저장과 커밋의 차이
편집기에서 파일을 저장했다고 Git 이력에 기록되는 것은 아니다. 작업 트리는 현재 편집하는 파일이고, 스테이징 영역은 다음 커밋에 넣을 변경을 고르는 곳이다. 커밋은 선택한 내용의 스냅샷과 작성 정보, 이전 커밋과의 연결을 기록한다. 파일 전체를 한꺼번에 올리기보다 하나의 목적에 해당하는 변경을 묶으면 검토하기 쉽다. Git의 데이터 모델
협업하는 흐름
예를 들어 검색 오류를 고칠 때 브랜치에서 수정과 테스트를 진행하고, 풀 리퀘스트로 변경 이유와 결과를 공유할 수 있다. 합의한 변경은 병합을 통해 기준 이력에 반영한다. 로컬 커밋을 만들었다는 사실과 원격 저장소에 공유했다는 사실은 구분해야 한다.
| 상태 | 의미 |
|---|---|
| 파일 저장 | 작업 중인 내용이 디스크에 있음 |
| 스테이징 | 다음 커밋에 넣을 변경을 선택함 |
| 커밋 | 로컬 저장소에 이력이 생김 |
| 원격 공유 | 다른 참여자가 가져갈 수 있음 |
알아둘 한계
Git은 GitHub 같은 호스팅 서비스 자체가 아니다. 접근 권한, 리뷰 화면, 자동화 실행 기능은 호스팅 플랫폼과 별도로 구성할 수 있다. 또한 추적하지 않은 파일이나 아직 커밋하지 않은 변경이 모두 복구된다고 기대하면 안 된다. 대용량 바이너리, 비밀 키, 운영 데이터의 보관은 각각 적절한 저장·백업 정책이 필요하다.