git rebase --skip을 통한 충돌 해결 사례

박재하·2023년 11월 16일
1

페어 프로그래밍 결과를 내 branch에 rebase/PR하기

내 branch에서 별도로 commit이 되어 있는 상태에서,
페어 프로그래밍 후 페어의 branch를 fetch/rebase해서 다시 PR을 보내는 과정은
생각보다 많은 난관이 있더군요.. 그래서 여기다가 그 과정을 좀 남겨보겠습니다.

스크린샷 2023-10-06 오전 11 17 36

먼저 upstream에서 J167를 가져와 줍니다.
J053과 J167은 지구반대편마냥 멀어져 버렸군요..

git remote add upstream https://github.com/boostcampwm2023/web-be-p2-was
git fetch upstream J167
git switch main
git switch -c J167
git rebase upstream/J167

우선은 J167을 upstream/J167과 동기화해줘야 합니다.
가장 좋은 것은 충돌이 없을 것으로 예상되는 main에서 가지치기를 해서 가져옵니다.

스크린샷 2023-10-06 오전 11 22 08

충돌이 있으면 git rebase 명령 후에 위와 같은 노란색 hint를 포함한 에러가 뜹니다. 한마디로

  1. 직접 충돌 파일을 추가/삭제하고 continue 하거나 : git rebase --continue
  2. 충돌을 그냥 두고 skip하거나 : git rebase --skip
  3. rebase 자체를 abort(취소)하거나 : git rebase --abort

셋 중 하나를 선택해서 터미널에 입력하라는 다소 머리아픈 얘기를 합니다.
결론적으로 저희는 git rebase --skip만 계속 갈겨주면 됩니다.


이제 J167 브랜치를 변화시켜 봅니다. upstream/J053을 기준으로 rebase를 시키는 건데,
우선 week5-day3에서 PR 날려서 Merge까지 한 upstream/J053를 다시 땡겨와보죠.

git fetch upstream J053
git switch J053
git rebase upstream/J053

J053이 upstream/J053에 동기화되었습니다.

스크린샷 2023-10-06 오전 11 32 08

이제 main이후로 분기되는 저 지점 이후의 모든 upstream/J167 커밋들을
J053 커밋들 이후로 복붙해서 기다란 (더럽혀진)J167브랜치를 만들어야 합니다.
그래야 PR을 충돌없이 날릴 수 있겠죠?

스크린샷 2023-10-06 오전 11 33 01

하여간 이번에도 rebase를 하면 됩니다. 끝날때 까지 git rebase --skip을 갈겨봅니다.

git switch J167
git rebase J053

git rebase --skip # rebase 끝날 때까지 계속 반복

스크린샷 2023-10-06 오전 11 36 10

스크린샷 2023-10-06 오전 11 39 44

드디어 드디어 저희가 원하는 그림이 나왔습니다! 이대로 PR 날려도 충돌이 없겠죠 이제


오늘 날릴 week5-day5 브랜치를 가지치기해줍니다.

git switch J053
git switch -c week5-day5

git rebase J167로 똑같이 만들어 주고 push

git rebase J167 # 바로 됩니다.
git push origin week5-day5

삽질하다가 commit이 꼬였다면 과감하게 push -f를 날려줍니다.

git push -f origin week5-day5

스크린샷 2023-10-06 오전 11 30 07

이제 사용하지 않는 branch들을 제거하면 되고, Github에서 PR을 날리면

git branch -D J167
git branch -D week5-day3

스크린샷 2023-10-06 오전 11 42 32

제가 지금 편집하고 있는 이 화면처럼 아름다운 PR 생성창을 얻을 수 있습니다.
오늘도 성.장.했.다. ㅋ굳

profile
해커 출신 개발자

1개의 댓글

comment-user-thumbnail
2023년 11월 16일

ㅋㅋㅋ아니 이건 또 언제 올리셨대 아주 좋습니다

답글 달기