> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parallelane.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 커밋 그래프

> 레인, 스코프, 미니맵, 그래프 검색

커밋 그래프는 ParalleLane의 대표 기능입니다. 저장소의 모든 커밋과 브랜치 구조를 레인(lane)으로 그려, 히스토리가 어떻게 갈라지고 합쳐졌는지 한눈에 파악할 수 있습니다. 이 문서는 그래프를 읽는 법과 탐색 도구를 설명합니다.

<Frame>
  <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/history-graph-lanes.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=959cc2fe263216f0ef69a9002a3ddc70" alt="여러 색 레인과 브랜치 배지, 작성자·날짜 라벨이 있는 커밋 그래프" width="1726" height="1784" data-path="images/history-graph-lanes.png" />
</Frame>

## 레인과 브랜치 구조 읽기

그래프의 각 세로줄이 하나의 **레인**입니다. 살아 있는 브랜치마다 레인이 하나씩 배정되며, 레인마다 색이 다릅니다.

* **맨 왼쪽 레인(lane 0)**: 맨 위 커밋에서 *첫 번째 부모(first-parent)* 를 따라 내려가는 줄, 즉 트렁크(주 계보)입니다. 위에서 아래로 곧게 이어지도록 배치되어, 주 흐름이 옆으로 새지 않습니다.
* **오른쪽 레인들**: 갈라져 나온 사이드 브랜치입니다. 갈래가 다시 합쳐지면(머지) 레인이 트렁크 쪽으로 수렴합니다.
* **엣지(연결선)** 의 색은 그 선의 **세로 구간이 놓인 레인**의 색을 따릅니다. 그래서 같은 레인을 지나는 선은 모두 같은 색으로 보입니다.

<Tip>
  레인 수는 "동시에 살아 있는 브랜치 수"만큼만 늘어납니다. 색은 브랜치를 구분하기 위한 것이지 고정된 의미(예: main = 파랑)를 갖지는 않습니다.
</Tip>

## pushed / unpushed 노드 구분

노드의 **채움 형태**로 그 커밋이 원격에 올라가 있는지를 나타냅니다. 색이 아니라 형태로 구분하므로 레인 색과 무관하게 읽을 수 있습니다.

<CardGroup cols={2}>
  <Card title="채워진 원" icon="circle">
    **pushed** — 어느 원격에든 존재하는(공유·백업된) 커밋입니다. 히스토리 대부분이 여기 해당합니다.
  </Card>

  <Card title="빈 원" icon="circle-dashed">
    **unpushed** — 로컬에만 있고 아직 어떤 원격에도 올라가지 않은 커밋입니다.
  </Card>
</CardGroup>

**현재 체크아웃한 커밋(HEAD)** 이 아직 unpushed이면, 그 노드 하나에만 물결 파장(sonar) 애니메이션이 나타나 "여기서부터 올릴 것이 있다"는 신호를 줍니다. HEAD가 pushed이거나 스태시 노드면 파장은 그려지지 않습니다.

<Note>
  pushed 판정은 **마지막 `git fetch` 시점의 원격 상태**를 기준으로 합니다. fetch하지 않은 사이 다른 사람이 같은 커밋을 올렸다면 실제로는 원격에 있어도 unpushed로 보일 수 있습니다.
</Note>

## 스코프 토글 (전체 / 현재 브랜치)

그래프가 담는 범위는 워크트리 종류에 따라 다릅니다 — **기본 워크트리**는 항상 모든 브랜치를 그리고, **연결된(linked) 워크트리**는 기본이 **현재 브랜치만**이며 헤더의 토글 버튼으로 전체 보기와 전환합니다. 토글이 나타나는 조건과 상태가 저장되는 범위는 [워크트리별 상태](/worktrees/status)에서 자세히 다룹니다.

<Frame>
  <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/history-graph-scope.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=865c8eb713d4e21baab841a1c6c394b1" alt="연결된 워크트리에서 현재 브랜치만 보도록 스코프를 좁힌 커밋 그래프" width="1726" height="1784" data-path="images/history-graph-scope.png" />
</Frame>

## 그래프 검색과 고급 필터

브라우저의 찾기(`Cmd/Ctrl+F`)와 비슷하게, 그래프 맥락을 유지한 채 커밋을 찾아 이동합니다.

<Steps>
  <Step title="검색 열기">
    `Cmd/Ctrl+F`를 누릅니다. 그래프 우상단에 검색 바가 뜨고 입력창에 포커스가 갑니다. 같은 키를 다시 누르면 닫힙니다. (기본 단축키이며 **설정 → ParalleLane → 단축키** 에서 바꿀 수 있습니다 — [키보드 단축키](/settings/keyboard-shortcuts) 참고.)
  </Step>

  <Step title="검색어 입력">
    자유 텍스트는 커밋 SHA의 앞부분 또는 커밋 요약(summary)에서 대소문자 구분 없이 찾습니다. 검색 바에는 `현재 / 전체`(예: `3 / 12`) 카운트가 표시되고, 0건이면 **결과 없음**으로 표시됩니다.
  </Step>

  <Step title="필터 조합 (선택)">
    `key:value` 형식의 필터를 자유 텍스트와 함께 입력합니다. 완성된 필터는 pill로 바뀌며 여러 개를 조합할 수 있습니다.

    | 필터         | 의미             | 예시                    |
    | ---------- | -------------- | --------------------- |
    | `author:`  | 작성자 이름 또는 이메일  | `author:alice`        |
    | `message:` | 커밋 요약(summary) | `message:"fix login"` |
    | `path:`    | 해당 경로를 바꾼 커밋   | `path:src/auth.ts`    |
    | `after:`   | 지정 날짜 0시부터     | `after:2026-07-01`    |
    | `before:`  | 지정 날짜 0시 이전    | `before:2026-07-22`   |

    공백이 있는 값은 큰따옴표로 묶습니다. 키를 입력하면 자동완성 목록이 나오고, 날짜 필터에는 날짜 선택기를 사용할 수 있습니다.
  </Step>

  <Step title="결과 이동">
    `Enter`로 다음 결과, `Shift+Enter`로 이전 결과로 이동합니다(끝에서 순환). 검색 바의 이전/다음 버튼도 같은 동작입니다. 현재 결과 커밋이 화면에 보이도록 스크롤되며 선택됩니다. 검색 결과가 하나 이상 있으면 **일치한 커밋만 또렷하게** 남고 나머지는 흐려져, 결과 분포를 그래프에서 바로 볼 수 있습니다.
  </Step>

  <Step title="검색 닫기">
    `Esc` 또는 닫기 버튼으로 닫습니다. 마지막으로 이동한 커밋의 **선택 상태는 유지**됩니다.
  </Step>
</Steps>

<Frame>
  <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/history-graph-search.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=4e975f3e2379a38b8ac08f722b4587ea" alt="그래프 우상단에 열린 커밋 검색 바 — 돋보기 아이콘, '커밋 검색…' 입력창, 이전·다음·닫기 버튼" width="1726" height="1784" data-path="images/history-graph-search.png" />
</Frame>

<Note>
  검색 범위는 현재 로드된 활성 스코프의 커밋입니다. "현재 브랜치만" 스코프에서는 그 범위 밖 커밋을 찾지 않습니다. 자유 텍스트와 `message:`는 제목(summary)을 검색하며 긴 본문(description)은 검색하지 않습니다. `path:` 결과는 경로 이력을 불러오는 동안 잠시 **검색 중…** 으로 표시될 수 있습니다.
</Note>

## 미니맵 (그래프 네비게이터)

긴 히스토리를 빠르게 이동할 수 있도록, 그래프 **우측 하단에 떠 있는 미니맵**이 있습니다. VS Code 에디터 미니맵과 같은 방식으로 동작합니다.

* 그래프의 **토폴로지(레인·노드·엣지)** 만 축소해 그립니다. 커밋 텍스트는 없고, 갈래의 끝점·분기점만 노드로 찍혀 모양이 단순해집니다.
* 미니맵은 항상 메인 뷰를 따라가며, 현재 보이는 범위를 **뷰포트 박스**로 표시합니다.
* 패널 **아무 곳을 클릭하면** 그 지점이 뷰포트 박스의 중심이 되도록 메인 뷰가 이동합니다. 그대로 **드래그**하면 이어서 스크럽되고, 미니맵 위에서 **휠 스크롤**해도 메인 뷰가 움직입니다.
* 패널 우측에 **상대 날짜 칩**("오늘", "3주 전" 등)이 함께 표시되어 대략적인 시간 위치를 알 수 있습니다. 칩에 마우스를 올리면 정확한 날짜가 툴팁으로 나옵니다.
* 배경은 평소 살짝 투명하고 마우스를 올리면 불투명해집니다. 히스토리가 짧아 스크롤이 필요 없으면 **자동으로 숨겨집니다**.

<Frame>
  <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/history-graph-navigator.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=707e87bed20f117d362f0ff4032c4d74" alt="미니맵 패널 — 축소된 그래프 토폴로지 위에 현재 보이는 범위를 표시하는 뷰포트 박스와 상대 날짜 칩" width="224" height="400" data-path="images/history-graph-navigator.png" />
</Frame>

## 날짜 섹션

커밋을 **같은 상대 날짜 라벨끼리 하나의 섹션**으로 묶어 보여줍니다.

* 각 섹션의 첫 행 우측에 상대 날짜 라벨이 표시됩니다. 라벨은 로컬 시간대의 달력일 차이로 계산하며, 오래될수록 버킷이 커집니다 — **오늘 / 어제 / N일 전**(6일까지) → **N주 전**(29일까지) → **N개월 전**(364일까지) → **N년 전**.
* 그래서 하루 단위로 갈라지는 것은 최근 1주일까지이고, 그보다 오래된 구간은 여러 날의 커밋이 "3주 전" 같은 한 섹션에 함께 묶입니다.
* 섹션 경계마다 가로 구분선이 그래프 레인·노드 아래로 깔립니다.
* 날짜 라벨에 마우스를 올리면 그 섹션 첫 커밋의 정확한 날짜(`2026-05-15 (수)`)가 툴팁으로 보입니다.

<Note>
  커밋 정렬은 위상정렬이라 시간 순서가 항상 단조롭지는 않습니다. 같은 라벨이 떨어진 위치에 다시 나타나면 섹션 머리글도 다시 표시됩니다(GitHub과 동일한 동작).
</Note>

## 커밋 선택과 상세

커밋을 한 번 클릭하면 선택되어, 해당 행이 강조되고 상세 정보(작성자·시각·메시지·변경 파일·diff)가 열립니다.

`Shift` 클릭으로 표시 순서상 연속 범위를, `Cmd`/`Ctrl` 클릭으로 개별 커밋을 더해 **여러 개를 함께 선택**할 수 있습니다. 다중 선택은 스쿼시와 여러 커밋 cherry-pick의 대상이 됩니다.

<Frame>
  <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/history-commit-detail.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=c5d3862a1936a3f6aea6d44efc5d6697" alt="커밋 하나를 선택한 그래프와, 작성자·시각·메시지·변경 파일이 표시된 오른쪽 커밋 상세 패널" width="2386" height="1784" data-path="images/history-commit-detail.png" />
</Frame>

### HEAD 계보 강조 (dim)

선택과 별개로, 그래프는 **현재 HEAD에서 도달 가능한 커밋(= HEAD의 조상 계보)** 을 또렷하게 그리고 그 밖의 커밋은 흐리게(dim) 그립니다. 어디까지가 지금 체크아웃한 계보인지 한눈에 갈라 보이게 하는 표시이며, 커밋을 골라도 바뀌지 않습니다 — 기준은 항상 HEAD입니다.

<Note>
  검색이 열려 있고 결과가 하나 이상이면 이 강조가 **검색 결과 강조로 대체**됩니다(일치한 커밋만 또렷). 결과가 0건이거나 검색을 닫으면 HEAD 계보 강조로 돌아옵니다.
</Note>

<Tip>
  커밋을 **더블클릭**하면 체크아웃이, **우클릭**하면 브랜치·태그·머지·리베이스 등 작업 메뉴가 열립니다. 각각 [체크아웃](/history/checkout), [브랜치 & 태그 관리](/history/branches-tags), [리베이스 & 머지](/history/rebase-merge)를 참고하세요.

  우클릭 메뉴를 읽는 규칙(구분선 그룹, 빨간색 항목, 이름 끝의 `…`)은 앱 전체에서 같으며 [화면 둘러보기](/interface-overview#컨텍스트-메뉴)에 정리돼 있습니다.
</Tip>
