Skip to main content
머지·리베이스·cherry-pick·revert·reset은 모두 커밋 그래프에서 커밋을 우클릭해 실행합니다.
HEAD 커밋을 우클릭해 열린 작업 메뉴 — 생성·읽기, cherry-pick, 히스토리 편집, 위험, ref 서브메뉴가 구분선으로 나뉘고 Reset 항목만 빨간색으로 표시됨

메뉴 읽는 법

메뉴는 다섯 그룹으로 묶이고, 조건이 맞지 않는 항목과 빈 그룹은 구분선까지 함께 사라집니다. 브랜치·태그 배지가 붙은 커밋에서는 ref별 서브메뉴가 맨 마지막에 덧붙습니다.
빨간색이 붙는 것은 Reset 과 ref 서브메뉴의 삭제 뿐입니다. 메뉴 규칙 전체는 화면 둘러보기에 정리돼 있습니다.

머지

커밋을 우클릭하고 현재 브랜치에 머지… 를 선택하면 전략 선택 다이얼로그가 열립니다. 전략을 고르고 Merge 를 누릅니다.

기본 (Default)

가능하면 fast-forward, 아니면 머지 커밋을 만듭니다.

No fast-forward

항상 머지 커밋을 만들어 합친 시점을 히스토리에 남깁니다.

Squash

커밋도 HEAD 이동도 없이 staged 상태로만 둡니다. 직접 커밋해야 합니다.
결과는 토스트로 안내됩니다.
  • 이미 최신 — 합칠 변경이 없어 아무것도 바뀌지 않습니다.
  • 머지 완료 — fast-forward 또는 머지 커밋이 만들어졌습니다. 이 경우에만 Undo가 기록됩니다.
  • Squash 완료 — 변경이 staged 상태입니다. 워킹 카피에서 확인하고 직접 커밋해야 끝납니다.
  • 충돌 — 아래 충돌이 나면을 참고하세요.
대상 커밋이 이미 현재 브랜치에 반영돼 있으면 머지 항목이 표시되지 않습니다.

리베이스

브랜치/커밋 위로 리베이스

올려놓을 대상을 우클릭하고 현재 브랜치를 이 브랜치(커밋) 위로 rebase 를 선택한 뒤, 확인 다이얼로그에서 Rebase 를 누릅니다.
다음 두 경우에는 실행 전에 거부되고 에러 알림만 뜹니다.
  • 추적 중인 파일에 커밋되지 않은 변경이 있을 때 — 커밋하거나 스태시한 뒤 다시 시도하세요.
  • 이미 진행 중인 머지·리베이스·cherry-pick·revert가 있을 때 — 완료하거나 중단한 뒤 실행하세요.

Interactive 리베이스

1

시작 커밋 우클릭

편집 대상 중 가장 오래된 커밋을 우클릭하고 여기서부터 interactive rebase… 를 선택합니다. 클릭한 커밋도 대상에 포함됩니다.
2

계획 편집

커밋이 오래된 것부터 나열됩니다. 각 행에서 동작을 고르고, 왼쪽 손잡이를 드래그해 순서를 바꿉니다.
  • Pick — 그대로 사용
  • 메시지 수정(reword) — 인라인으로 메시지 변경
  • Squash — 위 커밋에 합치기(결합 메시지 편집 가능)
  • Fixup — 위 커밋에 합치되 메시지는 버림
  • 삭제(drop) — 커밋 제거
첫 커밋은 squash/fixup 할 수 없고, 최소 한 개는 남겨야 하며, 메시지를 비울 수 없습니다. 규칙을 어기면 다이얼로그 상단에 이유가 표시됩니다.
3

실행

Rebase 시작 을 누릅니다.
Interactive Rebase 다이얼로그 — 커밋 행마다 드래그 손잡이, 동작 선택 드롭다운, 짧은 SHA와 커밋 요약이 놓여 있음

Cherry-pick

커밋의 변경을 현재 브랜치 위에 새 커밋으로 적용합니다. 커밋 하나는 우클릭 → Cherry-pick 커밋, 여러 개는 다중 선택 후 선택한 N개 커밋 cherry-pick 을 누르면 오래된 커밋부터 순서대로 적용됩니다.
선택에 merge 커밋이 있으면 항목이 cherry-pick 불가 — 선택에 머지 커밋 포함 으로 바뀌며 비활성화됩니다. 충돌이 나면 시퀀스가 멈추고, 워킹 카피에서 계속 하면 남은 커밋을 이어 적용하고 중단 하면 전체를 취소합니다.

Revert

커밋을 우클릭하고 커밋 되돌리기 를 선택하면 변경을 취소하는 새 커밋을 만듭니다. 기존 히스토리는 유지됩니다. merge 커밋을 되돌릴 때는 mainline 부모 를 고르는 다이얼로그가 열립니다(기본값 부모 1). 선택한 부모의 브랜치는 유지하고 반대편 변경을 되돌립니다.
mainline을 잘못 고르면 반대쪽 변경이 유지됩니다. 어떤 부모가 merge 당시의 기준 브랜치였는지 확인하세요.

Reset

우클릭 → 브랜치를 여기로 Reset… 으로 현재 브랜치를 그 커밋 위치로 되돌립니다. 기본 모드는 Mixed 입니다.
Hard 를 고르면 경고가 붙고 실행 버튼이 빨간색으로 바뀝니다. 커밋되지 않은 변경이 사라지며 되돌릴 수 없습니다.

충돌이 나면

충돌이 나면 작업이 중단되고 워킹 카피 패널에 배너가 나타납니다. 배너에서 진행 중인 작업 종류와 남은 충돌 개수를 확인하고 계속(Continue) / 중단(Abort) 할 수 있으며, 리베이스 중에는 건너뛰기(Skip) 도 나옵니다.
리베이스 진행 중 워킹 카피 패널 위쪽 배너 — 'Rebase 중 · 1 충돌'과 중단·건너뛰기 버튼, 충돌이 남아 비활성인 계속 버튼
남은 충돌이 있으면 계속 버튼이 비활성 상태입니다. 충돌 파일을 모두 해결해 스테이지하면 활성화됩니다. 해결 방법은 머지 충돌 해결에서 다룹니다.
Squash 머지에서 충돌이 나면 배너가 나타나지 않습니다. --squash 는 진행 중 상태를 남기지 않기 때문입니다. 충돌을 해결하고 스테이지한 뒤 일반 커밋으로 마무리하세요. 되돌리려면 Reset을 사용합니다.

히스토리 재작성 주의

리베이스와 Hard reset은 커밋 히스토리를 다시 씁니다. 이미 push한 커밋이 대상에 포함돼 있었다면 작업 후 force-push가 필요하다는 안내가 뜨며, Push 다이얼로그의 강제 (—force-with-lease) 토글을 사용하세요. 공유 브랜치에서는 팀과 합의된 경우에만 재작성하세요.