본문 바로가기

강의/실무까지 사용하는 git과 github

#4 Git rebase 사용법을 배워봐요😀 (github - pull request 충돌 해결)

안녕하세요 :)

이번 시간에는 rebase에 대해서 배워볼게요😀

rebase는 커밋을 재배치(rebase) 하기 위해서 사용을 하겠습니다. 재배치라 함은 커밋의 위치를 다시 배치하는 작업입니다.

다음과 같은 상황을 예시로 보겠습니다.

 

 

저는 task2 프린트 추가를 위한 기능 개발을 위해서 브랜치를 새롭게 만들었습니다. task1(로그) 위치에서 added-task2-printing이라는 브랜치를 새롭게 만들고, 개발 후에 task2 프린트 추가라는 커밋을 만들었습니다.

제가 task2를 개발하는 동안, 협업하시는 분들이 task1(로그) 위치에서 task8과 task9 개발을 완료하여 master 브랜치는 앞으로 쭉쭉 나가고 있습니다.

이때 제 브랜치(added-task2-printing)를 master 브랜치로 merge를 하려고 합니다.

하지만 겹치는 부분이 존재하여 충돌(conflict)이 발생하여 merge에 실패를 하였습니다 😢

이때 충돌 문제를 해결하기 위해서 git rebase를 사용하여 지금의 문제를 해결하겠습니다.

1.  rebase 명령어

# 충돌이 없는 경우
git checkout added-task2-printing
git rebase master 		# 바로 rebase 성공

# 충돌이 있는 경우
git checkout added-task2-printing
git rebase master 		# 충돌로 인해서 rebase 실패 -> 병합 작업 필요
## 코드 상에서 충돌 코드 직접 정리 수행
git add .
git rebase --continue		# rebase 성공

git rebase master 명령어는 지금의 현재 브랜치를 -> master 브랜치 위로 재배치(이동)하겠다입니다 :)

주의할 점은 rebase 명령어 수행 전에 현재 위치가 어디인지 꼭 확인을 해주세요.

2. rebase 완료 후 모습

git rebase에 성공이 되었다면 master 브랜치 위에 added-task2-printing 브랜치가 재배치(rebase)가 된 모습을 보실 수 있습니다.

지금 같은 경우는 한 줄로 되어 있어서 fast-forward 가 가능합니다. master 브랜치와 병합을 할 시 충돌 문제없이 병합이 되겠습니다.


유튜브 강의(rebase 사용법 및 충돌 문제 해결): URL