Amend: 마지막 커밋 수정
Amend는 새 커밋을 만들지 않고, HEAD(마지막) 커밋에 변경을 흡수하거나 메시지를 바꿉니다.1
Amend 모드 켜기
워킹 카피(Working copy) 패널에서 커밋 버튼 옆의 마지막 커밋 수정 (Amend) 체크박스를 켭니다. 또는 그래프에서 HEAD 커밋을 우클릭해 커밋 수정 (Amend) 을 선택하면 워킹 카피가 열리며 amend 모드로 전환됩니다.
2
대상 커밋의 파일 확인
Amend 모드에서는 스테이지됨 섹션에 수정 대상 커밋(HEAD)의 파일들이 나타납니다. 이 상태는 HEAD가 아니라 그 부모(HEAD^)를 기준으로 비교한 것입니다.
3
포함/제외 조정
커밋 파일을 스테이지 해제하면 그 파일은 amend에서 빠지고, 새 작업 변경을 스테이지하면 커밋에 더해집니다. 요약과 설명은 기존 커밋 메시지가 미리 채워지므로 그대로 고칠 수 있습니다.
4
Amend 클릭
커밋 버튼이 수정 (Amend) 으로 바뀝니다. 클릭하면 현재 index 상태로 마지막 커밋이 다시 작성됩니다. 새로 스테이지한 변경이 없어도(메시지만 고치는 reword) 요약만 있으면 실행할 수 있습니다.

커밋이 하나도 없거나(첫 커밋 전), 병합·rebase·cherry-pick·revert가 진행 중이면 Amend 체크박스가 비활성화됩니다.
Squash: 여러 커밋 합치기
Squash는 그래프에서 고른 연속 커밋들을 하나로 합칩니다. ParalleLane은 HEAD(브랜치 끝)를 포함하는 연속 구간만 지원합니다.1
커밋 여러 개 선택
그래프에서 첫 커밋을 클릭한 뒤,
Shift 클릭으로 범위를 넓히거나 Cmd/Ctrl 클릭으로 개별 선택합니다.2
스쿼시 메뉴 열기
선택 집합 안의 커밋을 우클릭하면 맨 위에 N개 커밋 스쿼시 항목이 나타납니다. 조건을 만족할 때만 표시됩니다.
3
합친 메시지 작성
다이얼로그에는 합쳐질 커밋 목록이 짧은 해시와 함께 읽기 전용으로 보입니다. 제목(Title) 에는 가장 오래된 커밋의 요약이, 설명(Description) 에는 나머지 커밋들의 요약이 오래된 순서대로 미리 채워집니다. 메시지를 정리한 뒤 스쿼시(Squash) 를 누릅니다.
4
결과 확인
합쳐진 하나의 커밋이 새 HEAD가 되고 그래프가 다시 그려집니다.

스쿼시가 가능한 조건
스쿼시가 가능한 조건
- 커밋이 2개 이상 선택됨
- 선택 집합에 HEAD가 포함됨
- HEAD에서 부모를 따라 내려간 연속된 선형 체인임 (중간에 빠진 커밋 없음)
- 선택한 커밋 중 병합 커밋이 없음 (전부 부모 1개)
- 가장 오래된 커밋이 루트 커밋이 아님 (부모가 있어야 함)
이미 push한 커밋을 고칠 때
Amend와 Squash는 로컬 히스토리를 다시 씁니다. 대상에 이미 원격으로 push한 커밋이 포함돼 있으면 로컬과 원격이 갈라집니다.Amend와 Squash도 되돌리기(Undo) 대상입니다. 실행 직후라면 헤더 툴바의 되돌리기 버튼이나
Cmd/Ctrl + Z 로 이전 상태로 돌아갈 수 있고, 이때 soft reset이 적용되므로 커밋에 들어 있던 변경은 스테이지된 상태로 남습니다. 되돌리기 스택은 워크트리마다 최근 20개까지만 메모리에 남고 앱을 재시작하면 사라지므로, 그 뒤에는 터미널의 git reflog가 마지막 수단입니다. 되돌리기 & Undo 문서를 참고하세요.
