지난 강의 예제 폴더 그대로 사용
다른 브랜치에서 파생된 브랜치 옮겨붙이기
rebase --onto 옵션 사용
🎯 fruit
브랜치에서 파생된 citrus
브랜치를 main
브랜치로 옮겨붙이기
git rebase --onto (도착 브랜치) (출발 브랜치) (이동할 브랜치)
git rebase --onto main fruit citrus
citrus
로 fast forward
rebase --onto를 되돌리려면?
위의 사항들을 진행하신 뒤 git reflog
를 사용해서 내역을 살펴보시면
아래와 같이, rebase --onto
명령시 여러 내역들이 진행된 것을 볼 수 있습니다.
rebase --onto
가 여러 동작들을 포함한다는 것을 알 수 있죠.
그럼 전체 브랜치의 상테를 reabse --onto
이전으로 돌리려면 어떻게 하면 될까요?
reset
은 브랜치별로 이뤄지므로, rebase --onto
로 영향을 받은
모든 브랜치들에서 하나하나 리셋을 진행해주어야 합니다.
혹은 다시 옮겨붙이는 방법도 있죠.
현재 이번 실습으로 변화가 일어난 브랜치는
main
(패스트포워드 됨)과 citrus
이 둘입니다.
1. main 브랜치
main
은 그리로 옮겨붙여진 citrus
로 fastforward된 것이 마지막 액션이므로
reflog
의 기록상에서 그 이전 기록으로 reset --hard
를 하면 됩니다.
lemon과 lime이 추가되기 전으로 돌아가는거죠.
2. citrus 브랜치
방법 A
그리고 citrus
브랜치는 해당 브랜치가 옮겨지기 전 마지막 커밋인
commit: Lime
부분을 reflog
에서 찾아 그리로 reset --hard
하면 됩니다.
방법 B
다른 방법으로는, 다시 rebase --onto
를 사용해서
citrus
의 커밋들을 main
으로부터 도로
fruit
브랜치의 orange
부분으로 옮기는 것입니다.
그러러면 orange
커밋으로 checkout
한 다음
그곳에서 새 브랜치를 만들고 (temp
라 가정하죠)
git rebase --onto temp main citrus
위 명령어로 citrus
의 두 커밋들을 해당 위치로 옮겨붙인 뒤
temp
브랜치는 삭제해주시면 됩니다.