홈 › Git › 05 / 8

히스토리 정리

섹션 7진행 0 / 8

6. 연습 문제

문제 1. rebase 로 선형 이력 만들기

feature 브랜치가 main 뒤에 있지 않고 갈라져 있습니다. feature 에서 실행할 명령을 쓰세요.

bash
git switch feature
git rebase main

feature 의 커밋이 main 최신 뒤로 재적용되며 해시가 바뀌고 이력이 한 줄이 됩니다.

문제 2. rebase -i 로 커밋 합치기

직전 커밋 2개를 하나로 합치고 싶습니다. 편집 화면에서 두 번째 줄의 pick 을 무엇으로 바꿀지 쓰세요.

squash(메시지도 합침) 또는 fixup(메시지는 버리고 첫 커밋 메시지만 사용)으로 바꿉니다.

문제 3. cherry-pick 범위

C1(제외) 다음부터 C4(포함)까지 커밋을 현재 브랜치로 옮기는 명령을 쓰세요.

bash
git cherry-pick C1..C4

A..B 는 A 를 포함하지 않고 B 까지 포함하는 범위입니다.

문제 4. force-with-lease 가 필요한 이유

rebase 로 이미 push 했던 브랜치의 해시를 바꾼 뒤 다시 push 하려 합니다. --force 대신 --force-with-lease 를 써야 하는 이유를 한 문장으로 쓰세요.

--force-with-lease 는 내 remote-tracking 브랜치와 실제 원격이 같을 때만 덮어써, 동료가 그 사이 push 한 커밋을 실수로 지우는 것을 막아줍니다.

문제 5. rebase 충돌 중단

rebase 도중 충돌이 나서 지금 상태로는 정리하기 어렵습니다. rebase 시작 전 상태로 완전히 되돌리는 명령을 쓰세요.

bash
git rebase --abort

지금까지 재적용한 커밋을 모두 취소하고 rebase 시작 전 브랜치 상태로 돌아갑니다.