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

# Amend & Squash

> 커밋 수정과 여러 커밋 합치기

**Amend** 로 마지막 커밋에 변경이나 메시지를 고쳐 넣고, **Squash** 로 연속된 커밋을 하나로 합칩니다.

## Amend: 마지막 커밋 수정

새 커밋을 만들지 않고 **HEAD 커밋**에 변경을 흡수하거나 메시지를 바꿉니다.

<Steps>
  <Step title="Amend 모드 켜기">
    워킹 카피 패널의 **마지막 커밋 수정 (Amend)** 체크박스를 켭니다.
    그래프에서 HEAD 커밋을 우클릭해 **커밋 수정 (Amend)** 을 골라도 됩니다.
  </Step>

  <Step title="포함할 파일 조정">
    스테이지됨 섹션에 대상 커밋(HEAD)의 파일이 나타납니다.
    **스테이지 해제**하면 amend에서 빠지고, 새 변경을 **스테이지**하면 더해집니다.
    요약과 설명에는 기존 메시지가 미리 채워집니다.
  </Step>

  <Step title="Amend 클릭">
    커밋 버튼이 **수정 (Amend)** 으로 바뀝니다.
    새로 스테이지한 변경이 없어도 메시지만 고쳐 실행할 수 있습니다.
  </Step>
</Steps>

<Frame>
  <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/basics-amend-mode.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=1fbc86d36b7d1c3ce7bce116e9e106b6" alt="Amend 모드로 전환된 워킹 카피 패널. Amend last commit 체크박스가 켜져 있고 요약란에는 기존 커밋 메시지 Merge feature/statement-search가 미리 채워졌으며, 오른쪽 버튼 라벨이 Amend로 바뀌었다" width="638" height="1702" data-path="images/basics-amend-mode.png" />
</Frame>

<Tip>
  Amend 모드를 다시 끄면 제외했던 파일의 인덱스가 HEAD 기준으로 복원되고, 켜기 전에 쓰던 커밋 초안이 되살아납니다.
  amend 중에 새로 스테이지한 변경은 스테이지된 상태로 남습니다.
</Tip>

<Note>
  첫 커밋 전이거나 병합·rebase·cherry-pick·revert가 진행 중이면 Amend 체크박스가 비활성화됩니다.
</Note>

## Squash: 여러 커밋 합치기

**HEAD(브랜치 끝)를 포함하는 연속 구간**만 합칠 수 있습니다.

<Steps>
  <Step title="커밋 여러 개 선택">
    그래프에서 합칠 커밋들을 선택합니다.
  </Step>

  <Step title="스쿼시 메뉴 열기">
    선택 집합 안의 커밋을 우클릭해 맨 위의 **N개 커밋 스쿼시** 를 고릅니다.
  </Step>

  <Step title="합친 메시지 작성">
    **제목(Title)** 에는 가장 오래된 커밋의 요약이, **설명(Description)** 에는 나머지 커밋의 요약이 오래된 순서대로 채워집니다.
    정리한 뒤 **스쿼시(Squash)** 를 누릅니다.
  </Step>
</Steps>

<Frame>
  <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/basics-squash-dialog.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=3e417af4b97c7db4747e369b49e482ee" alt="Squash 2 commits 다이얼로그. 위쪽에 합쳐질 커밋 두 개가 짧은 해시와 제목으로 읽기 전용 목록에 나열되고, 아래 TITLE·DESCRIPTION 입력란에 두 커밋 메시지가 미리 채워져 있으며 하단에 Cancel과 Squash 버튼이 있다" width="886" height="808" data-path="images/basics-squash-dialog.png" />
</Frame>

<AccordionGroup>
  <Accordion title="스쿼시 메뉴가 나타나는 조건" icon="list-checks">
    아래를 모두 만족해야 합니다.

    * 커밋이 2개 이상 선택됨
    * 선택 집합에 HEAD가 포함됨
    * HEAD에서 부모를 따라 내려간 연속된 선형 체인임
    * 병합 커밋이 없음
    * 가장 오래된 커밋이 루트 커밋이 아님
  </Accordion>
</AccordionGroup>

<Warning>
  추적 중인 파일에 커밋되지 않은 변경이 있으면 스쿼시가 거부됩니다.
  합쳐진 커밋의 작성자·날짜는 현재 사용자와 지금 시각으로 바뀝니다.
</Warning>

## 이미 push한 커밋을 고칠 때

Amend와 Squash는 로컬 히스토리를 다시 씁니다.
이미 push한 커밋이 대상에 있으면 로컬과 원격이 갈라지고 다음 push에서 **force push가 필요**합니다.

<Warning>
  ParalleLane은 안내 알림만 보여주고 자동으로 force push하지 않습니다.
  공유 브랜치에서는 다른 사람의 작업을 덮어쓸 수 있으니 주의하세요.
</Warning>

<Note>
  Amend와 Squash는 실행 직후 되돌리기(Undo) 대상입니다.
  soft reset이 적용되므로 커밋에 들어 있던 변경은 스테이지된 상태로 남습니다.
  [되돌리기 & Undo](/ko/basics/discard-undo)를 참고하세요.
</Note>
