
개념 사전 · 프로그램
Git
깃
은 파일 상태를 스냅샷과 커밋 이력으로 기록하는 분산 버전 관리 시스템이다. ·를 구분하고 브랜치 참조와 객체 구조를 이해하면 어떤 내용이 커밋·병합·공유되는지 추적할 수 있다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
로고: Git project 공식 자료. 제품 식별을 위해 표시하며 각 상표의 권리는 권리자에게 있습니다.
01무엇이고, 어떤 일을 하나
- 변경을 검토 가능한 커밋 단위로 기록한다.
- 브랜치와 병합으로 여러 작업 흐름을 결합한다.
- 원격 저장소와 객체·참조를 교환하여 협업 이력을 공유한다.
02어떤 순서로 동작하나
- 작업 트리 편집
현재 체크아웃의 파일을 수정하고 와의 차이를 확인한다.
- 스테이징
add가 그 시점의 내용을 index에 기록하여 다음 커밋에 넣을 상태를 정한다.
- 커밋 생성
index의 tree와 메타데이터·부모 관계를 가진 객체를 만들고 브랜치 참조를 이동한다.
- 공유·통합
fetch로 원격 객체와 참조를 가져오고 merge·rebase 등 의도한 방식으로 통합한 뒤 push로 공유한다.
03먼저 알아둘 용어와 구성요소
- 작업 트리는 편집 중인 파일, index는 다음 으로 기록할 스냅샷, 는 현재 기준 을 나타낸다.
- blob은 파일 내용이고 tree는 이름·모드와 blob 또는 하위 tree의 ID를 연결한다.
- 은 루트 tree, 부모 , 작성자·기록자·시각·메시지 등을 담는다.
- 정상적인 브랜치 작업에서 는 브랜치를 가리키고 새 을 만들면 그 브랜치 참조가 새 으로 이동한다.
- 일반적인 두 갈래 merge에서 충돌한 경로는 stage 1에 공통 조상, stage 2에 현재 쪽, stage 3에 합칠 쪽 내용을 보관할 수 있다. 추가·삭제 충돌에서는 모든 단계가 존재하지 않을 수 있다.
- origin/main은 서버의 브랜치 자체가 아니라 마지막 fetch 등으로 관찰한 원격 상태를 나타내는 로컬 참조다.
04예제로 따라가기
- add 후 파일을 다시 수정했다면 커밋에는 기본적으로 add 시점의 index 내용이 들어가고 이후 수정은 작업 트리에 남는다.
- 같은 포트 줄을 두 브랜치에서 다른 값으로 바꾸면 세 방향 병합 충돌이 생길 수 있으며 최종 프로그램 의미를 정한 후 add로 해결 상태를 기록한다.
- .gitignore에 비밀 파일을 추가해도 이미 커밋된 비밀이 과거 이력에서 자동 제거되거나 무효화되지는 않는다.
05혼동하기 쉬운 점과 확인 기준
- 편집기에만 있는 내용, 디스크에 저장된 작업 파일, index 내용, 객체는 다른 보존 단계다. 이력에서 찾을 수 있는 범위도 단계에 따라 다르다.
- 브랜치가 새 을 가리키는 것과 옛 객체가 즉시 삭제되는 것은 다르다. reflog는 로컬 참조 이동을 찾는 단서지만 영구 원격 백업을 대신하지 않는다.
- 로컬 merge 해결이 끝났어도 원격으로 push되지 않았다면 다른 사람이 그 을 가진 것은 아니다. 로컬 상태와 의 최신성, 실제 공유 완료를 구분한다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
READ · OBSERVE · CONNECT
함께 보는 학습 자료
아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.
Git blob·tree·commit 객체 그래프
Tree Objects와 Objects를 읽고 Simple version of the data model 그림에서 화살표를 따라간다. 이름·파일 내용·부모 이력이 어느 객체에 기록되는지 구별할 수 있다.
읽으면서 확인할 것
- blob에 파일 이름이 아닌 내용이 저장되는 구조
- tree가 파일 이름·모드와 객체 ID를 연결하는 방식
- 에서 tree와 부모 으로 이어지는 참조
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.