히스토리 정리
6. 연습 문제
문제 1. rebase 로 선형 이력 만들기
feature 브랜치가 main 뒤에 있지 않고 갈라져 있습니다. feature 에서 실행할 명령을 쓰세요.
git switch feature
git rebase mainfeature 의 커밋이 main 최신 뒤로 재적용되며 해시가 바뀌고 이력이 한 줄이 됩니다.
문제 2. rebase -i 로 커밋 합치기
직전 커밋 2개를 하나로 합치고 싶습니다. 편집 화면에서 두 번째 줄의 pick 을 무엇으로 바꿀지 쓰세요.
squash(메시지도 합침) 또는 fixup(메시지는 버리고 첫 커밋 메시지만 사용)으로 바꿉니다.
문제 3. cherry-pick 범위
C1(제외) 다음부터 C4(포함)까지 커밋을 현재 브랜치로 옮기는 명령을 쓰세요.
git cherry-pick C1..C4A..B 는 A 를 포함하지 않고 B 까지 포함하는 범위입니다.
문제 4. force-with-lease 가 필요한 이유
rebase 로 이미 push 했던 브랜치의 해시를 바꾼 뒤 다시 push 하려 합니다. --force 대신 --force-with-lease 를 써야 하는 이유를 한 문장으로 쓰세요.
--force-with-lease 는 내 remote-tracking 브랜치와 실제 원격이 같을 때만 덮어써, 동료가 그 사이 push 한 커밋을 실수로 지우는 것을 막아줍니다.
문제 5. rebase 충돌 중단
rebase 도중 충돌이 나서 지금 상태로는 정리하기 어렵습니다. rebase 시작 전 상태로 완전히 되돌리는 명령을 쓰세요.
git rebase --abort지금까지 재적용한 커밋을 모두 취소하고 rebase 시작 전 브랜치 상태로 돌아갑니다.