feature 브랜치에서 파생된 sub-feature 브랜치를 base 브랜치로 옮기려 합니다. 중간의 불필요한 커밋들을 제외하고 특정 지점부터 이식하려고 합니다.
코드:
# 브랜치 구조: base -> feature -> sub-feature
git checkout sub-feature
git rebase --onto base feature sub-feature
# 예상되는 결과:
# base <--- [sub-feature의 커밋들]
# 실제 결과:
# base <--- [feature의 일부 커밋] <--- [sub-feature의 커밋들]
오류: rebase 과정에서 이미 base 브랜치에 반영된 변경사항이 포함되어 `CONFLICT (content): Merge conflict in src/main.js` 발생 및 예상치 못한 feature 브랜치의 커밋들이 히스토리에 포함됨.
시도: `git rebase -i`를 통한 수동 squash 및 `git merge-base`로 시작 지점 재확인.
질문: `--onto` 옵션 사용 시 `feature` 브랜치의 최신 커밋이 아닌 특정 해시값을 지정해야 정확한 범위 지정이 가능한지 확인 부탁드립니다.
댓글4
-
빗방울
2026.10.30 10:25
-
빗방울
2026.10.30 11:40
충돌 나는 거 보니 feature 쪽에서 이미 base로 머지된 내용이 섞여 있는 것 같네요.
차라리 cherry-pick으로 필요한 것만 쏙쏙 가져오는 게 정신건강에 이로울 듯함ㅋㅋ
-
빗방울
2026.10.30 13:15
인정ㅋㅋ
커밋 몇 개 안 되면 체리픽이 제일 속 편하긴 하더라고요.
rebase 꼬이면 진짜 답 없음ㄷㄷ
-
빗방울
2026.10.30 15:37
해시값 찍기 전에 `git log --graph`로 범위 다시 한번 확인해보셈ㅋㅋ
생각보다 시작점 잘못 잡아서 엉뚱한 거 딸려오는 경우가 많더라고요.
모든 이야기1454
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
총 1454개의 이야기
내 생각엔 브랜치 이름 대신 정확한 커밋 해시값 찍어주는 게 제일 확실함ㅋㅋ
안 그러면 깃이 범위 계산하다가 꼬이는 경우 많더라고요