브랜치와 수술

머지와 리베이스

사이드바에서

브랜치를 우클릭하면 현재 브랜치에 머지나 여기로 리베이스가 나와요. 평범한 머지가 자꾸 어긋나는 경우라면 **옵션을 지정해 머지…**를 고르세요. 머지 옵션을 참고하세요.

레퍼런스를 다른 레퍼런스 위로 끌어다 놓기

이 앱에서 가장 빠른 동작이에요. 브랜치를 집어 들어 다른 브랜치 위에 놓으세요. Gitcito가 그 놓기가 뜻할 수 있는 것들을 작은 메뉴로 보여 주고, 고르기 전까지는 아무 일도 하지 않아요.

브랜치를 다른 브랜치 위로 끌면 그 놓기가 뜻할 수 있는 것들의 메뉴가 열립니다

레퍼런스가 보이는 두 곳 모두에서 동작해요. 사이드바의 브랜치·원격·태그 행에서, 그리고 그래프 안의 색깔 있는 ref 배지에서요. 어느 조합으로든 서로 끌어다 놓을 수 있고, 마우스를 올리고 있는 동안 놓을 대상이 강조돼요.

놓기 뜻
{source} → {target} 머지 대상을 체크아웃한 뒤 출처를 그 안으로 머지해요
{source}를 {target} 위로 리베이스 출처의 커밋들을 대상 위에 다시 얹어요
비교 비교를 열어요 — 아무것도 바꾸지 않아요

메뉴는 git이 할 수 있는 것만 제안해요. 머지는 대상 위에 커밋을 만들기 때문에 대상은 로컬 브랜치여야 해요 — 태그나 원격 추적 레퍼런스 안으로는 머지할 수 없어요. 리베이스는 출처를 다시 쓰기 때문에 출처가 로컬 브랜치여야 하고요. 태그를 원격 브랜치 위에 놓으면 제안되는 것은 비교뿐인데, 진짜로 그것밖에 없기 때문이에요.

리베이스는 먼저 확인을 물어봐요. 다시 얹은 커밋마다 새 해시를 주기 때문에, 브랜치가 이미 공개돼 있다면 강제 푸시가 필요해지거든요. 머지는 물어보지 않아요 — 더하기만 하니까요. 어느 쪽이든 되돌리기 한 번이면 원래대로 돌아가요.

머지

가능하면 fast-forward로, 아니면 위상을 기록으로 남기고 싶을 때는 머지 커밋을 강제할 수 있어요. 충돌이 나면 해결 도구로 넘어가요.

어떤 두 레퍼런스든 비교하기

기준과 비교 대상 레퍼런스를 고르세요 — 브랜치, 태그, 또는 SHA 그대로도 되고, 서로 바꾸는 버튼도 있어요. 그러면 앞섬/뒤처짐 개수, 각 쪽에만 있는 커밋, 합쳐진 전체 diff, 그리고 클릭 한 번으로 PR 열기로 넘어가는 길이 나와요.

두 브랜치 비교: 각 쪽에만 있는 것과 합쳐진 diff

사이드바(현재 브랜치와 비교), 도구 메뉴, 또는 ⌘K로 갈 수 있어요.

체리픽, 리버트, 리셋

체리픽과 리버트는 늘 그랬듯 그래프의 컨텍스트 메뉴에 있어요. 리셋은 항목 하나 — 커밋으로 리셋… — 가 됐어요. 서로 모순되던 soft/mixed/hard 세 개의 날것 항목 대신에요.

수정, 되돌리기, 리셋은 단일 커밋 메뉴의 맨 위에 놓이고, 안전하지 않을 때도 사라지지 않아요. 비활성화되고, 이유를 알려 주는 툴팁이 붙어요. 되돌리기는 푸시하지 않은 HEAD 전용이에요. 수정은 공개된 HEAD에도 허용되지만, 강제 푸시가 필요해질 거라고 경고해요. 리셋은 로컬 조상과 첫 번째 공개된 커밋까지만 닿아요 — 그보다 오래된 임의의 히스토리에는 닿지 않아요.

리셋 대화 상자는 모드를 분명하게 보여 줘요:

세 가지 모드가 또박또박 적힌 커밋으로 리셋 대화 상자

모드 결과
Soft 변경을 스테이징된 채로 남겨요
Mixed 변경을 스테이징하지 않은 채로 남겨요
Hard 커밋과 그 변경을 버려요

Hard가 미리 선택되어 있는 일은 절대 없어요. 작업 트리가 더럽혀져 있으면 경고가 하나 더 붙어요. 리셋이 진행 중인 작업을 덮어쓰거나 충돌시킬 수 있으니까요. GitHub에서 보기는 복사 동작들 옆에 있고, github.com 원격에 공개된 커밋에 대해서만 열려요.

커밋을 여러 개 선택해 두면 체리픽이 선택 전체를 순서대로 적용해요.

무언가를 머지하기 전에

충돌 레이더가 모든 브랜치를 기준 하나에 대고 훑어서, 어느 브랜치가 싸움을 일으킬지 알려 줘요. 아무것도 체크아웃하지 않고서요.

함께 보기: 대화형 리베이스 · 스택 브랜치 · 충돌 레이더

GitHub에서 이 번역 개선하기