home강의 홈으로
Section 10. Branch 보다 깊이 알기
Lesson 3. 다른 가지의 🌿 잔가지만 가져오기

지난 강의 예제 폴더 그대로 사용

branches


다른 브랜치에서 파생된 브랜치 옮겨붙이기

rebase --onto 옵션 사용


🎯 fruit 브랜치에서 파생된 citrus 브랜치를 main 브랜치로 옮겨붙이기

git rebase --onto (도착 브랜치) (출발 브랜치) (이동할 브랜치)
  • git rebase --onto main fruit citrus
  • citrus로 fast forward



rebase --onto를 되돌리려면?

위의 사항들을 진행하신 뒤 git reflog를 사용해서 내역을 살펴보시면
아래와 같이, rebase --onto 명령시 여러 내역들이 진행된 것을 볼 수 있습니다.

reflog

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 브랜치는 삭제해주시면 됩니다.

🤔얄코에게 질문하기질문은 반.드.시 이리로 보내주세요! ( 강의사이트 질문기능 ✖ )

강의에서 이해가 안 되거나 실습상 문제가 있는 부분,
설명이 잘못되었거나 미흡한 부분을 메일로 알려주세요!

답변드린 뒤 필요할 경우 본 페이지에
관련 내용을 추가/수정하도록 하겠습니다.

이메일 주소
yalco@yalco.kr
메일 제목 (반드시 아래 제목을 붙여넣어주세요!)
[질문] 제대로 파는 Git & GitHub (유료 파트) 10-3

🛑질문 전 필독!!

  • 구글링을 먼저 해 주세요. 들어오는 질문의 절반 이상은 구글에 검색해 보면 1분 이내로 답을 찾을 수 있는 내용들입니다.
  • 오류 메시지가 있을 경우 이를 구글에 복붙해서 검색해보면 대부분 짧은 시간 내 해결방법을 찾을 수 있습니다.
  • 강의 페이지에 추가사항 등 놓친 부분이 없는지 확인해주세요. 자주 들어오는 질문은 페이지에 추가사항으로 업데이트됩니다.
  • "유료파트의 강의페이지는 어디 있나요?" - 각 영상의 시작부분 검은 화면마다 해당 챕터의 강의페이지 링크가 있습니다.
  • 질문을 보내주실 때는 문제가 어떻게 발생했고 어떤 상황인지 등을 구체적으로 적어주세요. 스크린샷을 첨부해주시면 더욱 좋습니다.
🌏 Why not change the world?