> ## 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.

# 브랜치/커밋 비교

> 두 ref 비교

두 ref(브랜치, 태그, 커밋) 사이의 차이를 GitHub PR 화면처럼 확인합니다. "내 브랜치가 master 대비 뭐가 달라졌나"를 PR을 올리기 전에 미리 훑어보는 용도입니다.

## 비교 방식

ParalleLane은 두 대상의 **공통 조상(merge-base) 기준**으로 비교합니다. base(예: `master`)에 새 커밋이 쌓여도, 내가 갈라져 나온 이후 head에서 추가한 변경만 깔끔하게 표시됩니다. 헤더는 `base ← head` 형태로 표기됩니다.

<Note>
  비교 대상은 로컬 브랜치, 원격 브랜치, 태그, 커밋을 모두 지원합니다. 단 사이드바 드롭다운으로 고를 수 있는 것은 로컬 브랜치·원격 브랜치·태그뿐이며, 특정 커밋을 대상으로 삼으려면 그래프에서 그 커밋을 우클릭해 비교를 시작하세요.
</Note>

## 비교 시작하기

<Steps>
  <Step title="비교 진입점 선택">
    다음 중 한 곳에서 비교를 시작합니다. 어느 경로든 base와 head가 미리 채워진 상태로 Compare 탭이 열립니다.
    <br />• 그래프에서 커밋 우클릭 → **비교(Compare)** — 그 커밋이 base, 현재 체크아웃한 브랜치가 head가 됩니다.
    <br />• 커밋 우클릭 메뉴에서 그 커밋에 붙은 브랜치·태그 서브메뉴 → **비교(Compare)** — 그 ref가 base, 현재 체크아웃한 브랜치가 head가 됩니다.
    <br />• 그래프 탭 상단 헤더의 **비교(Compare)** 아이콘 버튼 — 저장소 기본 브랜치가 base, 현재 브랜치가 head가 됩니다(기본 브랜치를 찾지 못하면 둘 다 현재 브랜치).

    base와 head가 아직 정해지지 않은 Compare 탭에서는 diff 대신 **비교할 두 대상을 선택하세요.(Pick two refs to compare.)** 안내만 표시됩니다.

    <Frame>
      <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/review-compare-picker.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=eb098c10a540e65b7f0969d57bb797ca" alt="우측 사이드바에 값이 비어 있는 base·head 드롭다운과 스왑 버튼이 있고, 메인 Compare 탭에는 비교할 두 대상을 선택하세요 안내만 보이는 화면" width="2906" height="1784" data-path="images/review-compare-picker.png" />
    </Frame>
  </Step>

  <Step title="base와 head 지정">
    우측 사이드바 상단의 두 드롭다운에서 base와 head를 고릅니다. 드롭다운은 Branches / Remotes / Tags 그룹으로 나뉩니다. 두 드롭다운 오른쪽의 **base와 head 바꾸기(Swap base and head)** 버튼으로 둘을 맞바꿀 수 있습니다.
  </Step>

  <Step title="변경 파일 훑어보기">
    사이드바에 변경 파일 수, 추가·삭제 줄 수, **N 앞 · N 뒤(N ahead · N behind)** 요약이 뜨고, 그 아래 변경 파일 목록이 나열됩니다.
  </Step>

  <Step title="파일 diff 보기">
    결과가 도착하면 첫 번째 파일이 자동으로 선택되고, 다른 파일을 클릭하면 메인 Compare 탭에 그 파일의 diff가 열립니다. 상단에 `base ← head`와 파일 경로가 브레드크럼으로 표시되고, split/unified 전환·컨텍스트 줄 조절 등 일반 diff 컨트롤을 그대로 씁니다.
  </Step>
</Steps>

<Frame>
  <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/review-compare.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=214fd2f2f44b0620e66e418537c893da" alt="메인 영역의 Compare 탭에 base ← head 브레드크럼과 파일 경로, 그 아래 선택한 파일의 통합(unified) diff가 표시된 화면" width="1726" height="1784" data-path="images/review-compare.png" />
</Frame>

## 선택 유지 UX

Compare 탭은 하나만 열리며(단일 인스턴스), 닫을 수 있습니다. 사용 중 편의를 위한 동작은 다음과 같습니다.

<CardGroup cols={2}>
  <Card title="파일 선택이 유지됩니다" icon="pin">
    풀·체크아웃·포커스 복귀나 저장소 변경으로 비교가 자동 새로고침돼도, 보고 있던 파일이 새 결과에도 있으면 그 선택을 유지합니다. 사라진 파일이면 첫 번째 파일로 되돌아갑니다.
  </Card>

  <Card title="스왑 버튼 위치" icon="arrow-left-right">
    base/head를 맞바꾸는 스왑 버튼은 조작 대상인 두 드롭다운 옆(사이드바)에 있습니다.
  </Card>

  <Card title="드롭다운 내부 스크롤" icon="list">
    ref가 많은 저장소에서도 드롭다운은 자체 높이 안에서만 스크롤되어 사이드바 전체가 밀리지 않습니다.
  </Card>

  <Card title="이미지·바이너리" icon="image">
    이미지·바이너리 파일도 일반 diff 뷰어와 동일하게 처리됩니다.
  </Card>
</CardGroup>

<Tip>
  이미지 diff, 공백 변경 무시, 줄바꿈 토글 등 diff 표시 옵션은 [Diff 뷰어](/basics/diff-viewer)의 컨트롤을 그대로 사용합니다. 켜진 토글 버튼은 강조 상태로 표시됩니다.
</Tip>

<Warning>
  두 대상에 공통 조상이 없으면(무관한 히스토리) diff 대신 오류 안내가 표시됩니다. 이때는 Git 엔진이 보낸 원문 메시지(`no common ancestor between the two refs`)가 그대로 노출될 수 있습니다. base와 head가 같거나 변경이 없으면 **변경 사항 없음(No changes)** 으로 표시됩니다.
</Warning>
