Skip to main content
이미 만든 커밋을 다듬는 두 가지 방법입니다. Amend로 마지막 커밋에 변경이나 메시지를 고쳐 넣고, Squash로 연속된 여러 커밋을 하나로 합칠 수 있습니다. 둘 다 push 전 히스토리를 깔끔하게 정리할 때 유용합니다.

Amend: 마지막 커밋 수정

Amend는 새 커밋을 만들지 않고, HEAD(마지막) 커밋에 변경을 흡수하거나 메시지를 바꿉니다.
1

Amend 모드 켜기

워킹 카피(Working copy) 패널에서 커밋 버튼 옆의 마지막 커밋 수정 (Amend) 체크박스를 켭니다. 또는 그래프에서 HEAD 커밋을 우클릭해 커밋 수정 (Amend) 을 선택하면 워킹 카피가 열리며 amend 모드로 전환됩니다.
2

대상 커밋의 파일 확인

Amend 모드에서는 스테이지됨 섹션에 수정 대상 커밋(HEAD)의 파일들이 나타납니다. 이 상태는 HEAD가 아니라 그 부모(HEAD^)를 기준으로 비교한 것입니다.
3

포함/제외 조정

커밋 파일을 스테이지 해제하면 그 파일은 amend에서 빠지고, 새 작업 변경을 스테이지하면 커밋에 더해집니다. 요약과 설명은 기존 커밋 메시지가 미리 채워지므로 그대로 고칠 수 있습니다.
4

Amend 클릭

커밋 버튼이 수정 (Amend) 으로 바뀝니다. 클릭하면 현재 index 상태로 마지막 커밋이 다시 작성됩니다. 새로 스테이지한 변경이 없어도(메시지만 고치는 reword) 요약만 있으면 실행할 수 있습니다.
Amend 모드로 전환된 워킹 카피 패널. Amend last commit 체크박스가 켜져 있고 요약란에는 기존 커밋 메시지 Merge feature/statement-search가 미리 채워졌으며, 오른쪽 버튼 라벨이 Amend로 바뀌었다
Amend 모드를 다시 끄면 amend에서 제외했던 파일의 인덱스가 HEAD 기준으로 복원되고, 켜기 전에 쓰던 새 커밋 초안(요약·설명)이 되살아납니다. HEAD를 실제로 옮기지 않기 때문에 그래프가 흔들리지 않고 안전하게 취소됩니다. 다만 amend 중에 새로 스테이지한 변경은 그대로 스테이지된 상태로 남습니다.
커밋이 하나도 없거나(첫 커밋 전), 병합·rebase·cherry-pick·revert가 진행 중이면 Amend 체크박스가 비활성화됩니다.

Squash: 여러 커밋 합치기

Squash는 그래프에서 고른 연속 커밋들을 하나로 합칩니다. ParalleLane은 HEAD(브랜치 끝)를 포함하는 연속 구간만 지원합니다.
1

커밋 여러 개 선택

그래프에서 첫 커밋을 클릭한 뒤, Shift 클릭으로 범위를 넓히거나 Cmd/Ctrl 클릭으로 개별 선택합니다.
2

스쿼시 메뉴 열기

선택 집합 안의 커밋을 우클릭하면 맨 위에 N개 커밋 스쿼시 항목이 나타납니다. 조건을 만족할 때만 표시됩니다.
3

합친 메시지 작성

다이얼로그에는 합쳐질 커밋 목록이 짧은 해시와 함께 읽기 전용으로 보입니다. 제목(Title) 에는 가장 오래된 커밋의 요약이, 설명(Description) 에는 나머지 커밋들의 요약이 오래된 순서대로 미리 채워집니다. 메시지를 정리한 뒤 스쿼시(Squash) 를 누릅니다.
4

결과 확인

합쳐진 하나의 커밋이 새 HEAD가 되고 그래프가 다시 그려집니다.
Squash 2 commits 다이얼로그. 위쪽에 합쳐질 커밋 두 개가 짧은 해시와 제목으로 읽기 전용 목록에 나열되고, 아래 TITLE·DESCRIPTION 입력란에 두 커밋 메시지가 미리 채워져 있으며 하단에 Cancel과 Squash 버튼이 있다
스쿼시 메뉴는 아래 조건을 모두 만족할 때만 나타납니다.
  • 커밋이 2개 이상 선택됨
  • 선택 집합에 HEAD가 포함됨
  • HEAD에서 부모를 따라 내려간 연속된 선형 체인임 (중간에 빠진 커밋 없음)
  • 선택한 커밋 중 병합 커밋이 없음 (전부 부모 1개)
  • 가장 오래된 커밋이 루트 커밋이 아님 (부모가 있어야 함)
비연속 선택, HEAD 미포함, 병합 커밋 포함, 루트 포함인 경우에는 메뉴가 나타나지 않습니다.
스쿼시는 추적 중인 파일에 커밋되지 않은 변경이 있으면 거부됩니다(아직 추적하지 않는 새 파일은 상관없습니다). 작업 트리를 먼저 커밋하거나 정리한 뒤 실행하세요. 또한 합쳐진 커밋의 작성자·날짜는 현재 사용자와 지금 시각으로 바뀝니다(원본 작성자 정보는 보존되지 않습니다).

이미 push한 커밋을 고칠 때

Amend와 Squash는 로컬 히스토리를 다시 씁니다. 대상에 이미 원격으로 push한 커밋이 포함돼 있으면 로컬과 원격이 갈라집니다.
이미 push된 커밋을 amend/squash하면 다음 push에서 force push가 필요합니다. ParalleLane은 이 경우 성공 후 안내 알림을 보여주지만 자동으로 force push하지는 않습니다. 협업 중인 공유 브랜치에서는 다른 사람의 작업을 덮어쓸 수 있으니 특히 주의하세요. force push는 직접 실행해야 합니다.
Amend와 Squash도 되돌리기(Undo) 대상입니다. 실행 직후라면 헤더 툴바의 되돌리기 버튼이나 Cmd/Ctrl + Z 로 이전 상태로 돌아갈 수 있고, 이때 soft reset이 적용되므로 커밋에 들어 있던 변경은 스테이지된 상태로 남습니다. 되돌리기 스택은 워크트리마다 최근 20개까지만 메모리에 남고 앱을 재시작하면 사라지므로, 그 뒤에는 터미널의 git reflog가 마지막 수단입니다. 되돌리기 & Undo 문서를 참고하세요.