작업 중인 파일과 기록
작업 트리는 현재 파일을 편집하는 공간이고 인덱스는 다음 커밋에 포함할 내용을 준비하는 데 쓰인다. 커밋은 기록된 상태와 부모 관계 등을 담는다.
파일을 저장했다고 자동으로 커밋되는 것은 아니다. 편집 상태와 준비 상태, 기록된 상태를 구분하면 일부 변경만 선택해 기록하는 동작을 이해할 수 있다.
분기와 커밋의 관계
분기는 특정 커밋을 가리키는 참조를 중심으로 관리된다. 새 커밋을 만들면 작업 중인 분기의 참조가 앞으로 이동할 수 있다.
여러 분기에서 달라진 내용을 병합하거나 다른 순서의 이력으로 정리할 수 있다. 이 과정에서 파일 충돌과 논리적인 통합 문제는 별도로 검토해야 한다.
원격 저장소와 협업
원격에서 정보를 가져오는 작업과 로컬 작업에 통합하는 과정은 구분된다. 로컬 커밋을 원격에 전송하려면 별도의 푸시가 필요하다.
GitHub와 같은 서비스는 깃 저장소의 호스팅과 검토, 이슈 등 추가 기능을 제공한다. 깃 자체가 특정 서비스의 계정이나 네트워크 연결을 항상 요구하는 것은 아니다.
이력이 보장하는 범위
객체 식별과 이력 관계는 내용의 변화와 연결을 추적하는 데 쓰인다. 그렇다고 저장된 코드가 올바르거나 작성자의 주장이 사실임을 자동으로 보증하지는 않는다.
커밋의 작성자 정보와 접근 권한, 검토 및 서명 정책은 구분된다. 저장소의 무결성과 실제 작업의 승인·신뢰를 같은 문제로 취급해서는 안 된다.