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

메뉴 읽는 법

우클릭 메뉴는 앱 전체 공통 규칙을 따릅니다 — 성격별로 구분선으로 묶이고, 위에서 아래로 안전한 것부터 위험한 것 순 으로 놓이며, 이름 끝의 은 다이얼로그가 먼저 열린다는 표시입니다(그래서 비교 에는 …이 없고 현재 브랜치에 머지… 에는 있습니다). 규칙 전체는 화면 둘러보기에 정리돼 있습니다. 커밋 그래프의 메뉴는 그 규칙에 따라 다섯 그룹으로 묶입니다.
  • 조건이 맞지 않아 그룹이 통째로 비면 그 구분선도 함께 사라집니다. 메뉴에 항목이 몇 개 보이든 구분선이 앞뒤로 남거나 겹치는 일은 없습니다.
  • 브랜치·태그 배지가 붙은 커밋에서는 그 ref별 서브메뉴가 맨 마지막 그룹으로 덧붙습니다.
이 메뉴에서 빨간색이 붙는 것은 Reset 과 브랜치·태그 서브메뉴의 삭제 뿐입니다. 커밋 되돌리기(Revert) 는 되돌리는 커밋을 새로 쌓을 뿐이고, Amend·스쿼시·rebase 는 로컬 히스토리를 다시 쓰는 일상 작업이라 강조하지 않습니다.

머지

커밋(또는 브랜치 tip)을 현재 체크아웃한 브랜치로 합칩니다.
1

대상 커밋 우클릭

현재 브랜치로 가져올 커밋을 우클릭하고 현재 브랜치에 머지… 를 선택합니다. 브랜치 배지가 붙은 커밋에서는 그 브랜치별 서브메뉴에도 같은 항목이 있습니다(원격 브랜치는 origin/feature 형태의 정규화된 ref로 머지).
2

전략 고르기

바로 머지되지 않고 전략 선택 다이얼로그 가 먼저 열립니다. 전략(Strategy) 은 세 가지 중 하나이며, 고른 전략의 설명이 아래에 함께 표시됩니다. 기본 선택은 기본(Default) 입니다.
3

Merge 실행

Merge 를 누르면 머지가 실행되고, 결과가 토스트로 안내됩니다. 충돌 없이 끝나면 그래프가 갱신됩니다.

머지 전략

기본 (Default)

가능하면 fast-forward로 이어 붙이고, 아니면 머지 커밋을 만듭니다. Git의 기본 동작입니다.

No fast-forward

fast-forward가 가능해도 항상 머지 커밋 을 만듭니다. 합친 시점이 히스토리에 남습니다.

Squash

합쳐진 변경을 커밋도, HEAD 이동도 없이 staged 상태로만 둡니다. 직접 커밋해 마무리해야 합니다.

결과 안내

머지 결과는 상황별로 다른 토스트로 구분해 알려줍니다.
  • 이미 최신 — 합칠 변경이 없으면 “이미 최신 상태입니다 — 병합할 변경이 없습니다”만 뜨고 아무것도 바뀌지 않습니다. HEAD는 그대로입니다.
  • 머지 완료 — fast-forward 또는 머지 커밋이 만들어지면 브랜치 이름과 함께 머지 완료 가 뜹니다. 이 경우에만 Undo가 기록됩니다(Squash와 충돌 결과는 HEAD가 움직이지 않아 대상이 아닙니다).
  • Squash 완료 — “변경이 staged 상태입니다. 확인 후 커밋하세요” 안내가 뜹니다. 커밋이 아직 없으므로 워킹 카피(Working copy)에서 내용을 확인하고 직접 커밋해야 머지가 끝납니다.
  • 충돌 — 경고 토스트가 뜹니다. 아래 충돌이 나면을 참고하세요.
현재 브랜치에 머지… 항목은 대상 커밋이 이미 HEAD에서 도달 가능한 경우(현재 브랜치에 이미 반영된 조상)에는 무의미(no-op)하므로 표시되지 않습니다. 실제로 합칠 것이 있을 때만 나타납니다.

리베이스

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

현재 브랜치의 커밋들을 다른 브랜치나 커밋 위로 다시 쌓습니다.
1

기준 우클릭

올려놓을 대상을 우클릭합니다.
  • 브랜치 배지: 현재 브랜치를 이 브랜치 위로 rebase
  • 커밋: 현재 브랜치를 이 커밋 위로 rebase
2

확인

“현재 브랜치의 커밋들을 대상 위로 다시 적용합니다. 히스토리가 변경됩니다”라는 안내와 함께 확인 다이얼로그가 뜹니다. Rebase 를 눌러 실행합니다.
리베이스는 두 경우에 실행 전에 거부되고 에러 알림만 뜹니다(standalone·interactive 모두 동일).
  • 추적 중인 파일에 커밋되지 않은 변경이 있을 때 — “Working tree has uncommitted changes. Commit or stash before rebasing.” 커밋하거나 스태시한 뒤 다시 시도하세요. 추적되지 않은(untracked) 새 파일만 있으면 막지 않습니다.
  • 이미 진행 중인 머지·리베이스·cherry-pick·revert가 있을 때 — “진행 중인 작업이 있습니다. 완료하거나 중단한 뒤 이 동작을 실행하세요.”
무의미한 경우(대상이 이미 HEAD에서 도달 가능 등)에는 메뉴 항목 자체가 숨겨집니다.

Interactive 리베이스

커밋 목록을 편집해 다시 쌓습니다.
1

시작 커밋 우클릭

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

계획 편집

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

실행

Rebase 시작 을 누르면 계획대로 히스토리를 다시 씁니다.
Interactive Rebase 다이얼로그 — 커밋 행마다 드래그 손잡이, 동작 선택 드롭다운, 짧은 SHA와 커밋 요약이 놓여 있음

Cherry-pick

하나 또는 여러 커밋의 변경을 현재 브랜치 위에 새 커밋으로 적용합니다.
커밋을 우클릭하고 Cherry-pick 커밋을 선택합니다.
다중 선택에 merge 커밋이 하나라도 들어 있으면 메뉴 항목이 cherry-pick 불가 — 선택에 머지 커밋 포함 (N개) 로 바뀌며 비활성화됩니다(git이 -m 없이는 거부하기 때문). 충돌이 나면 전체 시퀀스가 중간에서 멈추며, 워킹 카피에서 계속하면 남은 커밋을 이어서 적용하고 중단하면 시퀀스 전체를 취소합니다.

Revert

커밋을 우클릭하고 커밋 되돌리기를 선택하면 변경을 취소하는 새 커밋을 만듭니다. 기존 커밋과 히스토리는 유지됩니다. merge 커밋을 되돌릴 때는 mainline 부모를 선택하는 다이얼로그가 열립니다. 기본값은 부모 1이며, 선택한 부모의 브랜치는 유지하고 반대편에서 들어온 변경을 되돌립니다. 부모 SHA와 제목을 확인한 뒤 실행하세요.
merge revert의 mainline을 잘못 고르면 의도한 브랜치가 아니라 반대쪽 변경을 유지할 수 있습니다. 어떤 부모가 merge 당시의 기준 브랜치였는지 확인하세요.

Reset

현재 브랜치를 우클릭한 커밋 위치로 되돌립니다. 우클릭 → 브랜치를 여기로 Reset… 을 누르면 다이얼로그가 열리고, 모드 를 고릅니다. 기본 선택은 git 기본값과 같은 Mixed 입니다.
Hard 를 고르면 다이얼로그에 작업 트리의 변경이 모두 폐기됩니다 경고가 붙고 실행 버튼이 빨간색으로 바뀝니다. 커밋되지 않은 변경과 되돌린 커밋의 작업 내용이 사라지며 되돌릴 수 없으니 주의하세요.

충돌이 나면

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

히스토리 재작성 주의

리베이스와 (Soft/Mixed가 아닌) reset은 커밋 히스토리를 다시 씁니다. 이미 원격에 push한 브랜치의 히스토리를 재작성하면 push 시 force가 필요하고, 그 브랜치를 공유하는 다른 사람의 작업과 어긋날 수 있습니다.이미 push한 커밋이 재작성 대상에 포함돼 있었다면, 작업이 성공한 뒤 ParalleLane이 “히스토리를 다시 썼습니다. 이미 push한 커밋이라면 force-push가 필요합니다.” 안내를 한 번 띄웁니다(리베이스·interactive 리베이스·스쿼시·Amend 공통). Push 다이얼로그의 강제 (—force-with-lease) 토글을 사용하세요. 공유 브랜치에서는 팀과 합의된 경우에만 재작성하세요.