한 줄 요약
git 최상위 명령의 공식 매뉴얼 페이지로, Git의 전체 명령을 포슬린(porcelain)과 플럼빙(plumbing) 두 층으로 갈라 목록화하고 끝부분 Discussion 절에서 저장소 구조를 요약한다.
핵심 내용
- 한 줄 소개 —
git은 "the stupid content tracker"이며, 빠르고 확장 가능한 분산 버전 관리 시스템으로 고수준 연산과 내부에 대한 완전한 접근을 함께 제공한다고 적는다. - 두 층으로 나뉜다 — 명령을 고수준 "포슬린"과 저수준 "플럼빙"으로 나눈다. 포슬린은 다시 주 명령과 보조 유틸리티로 갈린다.
- 왜 나누는가 — 플럼빙의 인터페이스(입출력·옵션·의미)는 스크립트에서 쓰라고 만든 것이라 포슬린보다 훨씬 안정적으로 유지된다. 반대로 포슬린은 사용자 경험을 개선하려고 바뀔 수 있다. 다른 포슬린을 직접 만들 수 있을 만큼 플럼빙만으로도 충분하다고 밝힌다.
- 주제별 명령 분류 — 설정, 프로젝트 가져오기·만들기(
init·clone), 기본 스냅샷(add·status·diff·commit·restore·reset), 브랜치와 머지(branch·checkout·switch·merge·log·stash·tag), 공유와 갱신(fetch·pull·push·remote), 조회·비교, 패치(apply·cherry-pick·rebase·revert), 디버깅, 관리, 플럼빙. - reset·restore·revert 세 명령의 분업 — 이름이 비슷해 헷갈리는 셋을 한 절로 따로 떼어 정리한다.
revert는 다른 커밋의 변경을 되돌리는 새 커밋을 만드는 일,restore는 인덱스나 다른 커밋에서 작업 트리 파일을 복원하는 일(브랜치를 갱신하지 않는다),reset은 브랜치를 갱신하는 일(끝점을 옮겨 커밋을 더하거나 뺀다, 커밋 역사가 바뀐다)이다. - 저장소 구조(Discussion) — 작업 디렉터리 최상위에
.git하위 디렉터리가 있고, 그 안에 역사 전체를 담은 압축된 객체 데이터베이스, 그 역사와 현재 작업 트리 내용을 잇는index파일, 태그·브랜치 헤드 같은 이름 붙은 포인터가 들어 있다. - 객체와 참조의 정의 — 객체 데이터베이스에는 블롭(파일 데이터)·트리(블롭과 다른 트리를 가리켜 디렉터리 계층을 만든다)·커밋(트리 하나와 부모 커밋 몇 개를 참조한다) 세 유형이 있고, 서명용으로 태그라는 네 번째 유형이 있다. 모든 객체는 내용의 SHA-1 해시로 이름 붙고 그 이름은 전역적으로 유일하다.
주요 주장 / 데이터
- "부모가 둘 이상인 커밋은 독립된 개발 갈래의 머지를 나타낸다" — 머지 커밋의 정의를 부모 개수로 못 박는다.
refs/heads/는 브랜치의 최신 커밋,refs/tags/는 태그,HEAD는 현재 체크아웃된 브랜치의 이름을 담는다. 참조가 다른 참조의 이름을 담으면 "심볼릭 참조"라고 부른다.- 인덱스는 머지 중 한 경로에 여러 버전(stage)을 담을 수 있다. 충돌 중인 파일의 여러 판본을 인덱스가 들고 있는 구조라, 인덱스는 단순한 "다음 커밋 후보" 이상의 역할도 한다.
- 객체는 처음엔 파일 하나씩 저장되지만 나중에 효율을 위해 "팩 파일"로 함께 압축될 수 있다.
- 보안 경고가 따로 있다 — 설정과 훅은 clone으로 복사되지 않으므로 신뢰할 수 없는 저장소를 clone 해서 들여다보는 것은 대체로 안전하다. 그러나 출처가 의심스러운
.git디렉터리 안에서 Git 명령을 돌리는 것은 안전하지 않다. 설정과 훅의 셸 명령이 그대로 실행되기 때문이다.
출처 정보
- 저자/발행처: git-scm.com — Git 공식 문서 (
gitman page) - 수집일: 2026-09-22
- URL: https://git-scm.com/docs/git
- 범위: 페이지 본문 전체(명령 목록·NAME/DESCRIPTION·GIT COMMANDS·Discussion·SECURITY). 개별 하위 명령의 매뉴얼은 #49 git 매뉴얼 11편으로 따로 수집했다.