[Git] update with rebase: conflict 직접 해결하기

[원본 링크]

그냥 git에서 머지를 마구 박다보면 커밋 히스토리를 보기 힘들어지는 경우가 있다.

이건 조금 선호의 영역이긴 한데, 그래서 rebase 주도로 merge를 하는 경우가 있다.
merge를 전부 Rebase Merge로만 해주는 것이다.

Github은 이를 위해 PR 페이지에서 자체적으로 Rebase And Merge 기능을 제공한다.

그런데 문제는 다른 사람이 뭘 올려서 master->dev 동기화를 해줘야 할 경우다.
그냥 큰 신경을 쓰지 않는다면 그냥 머지받아서 쓰면 되는데, merge 기록이 남는걸 원하지 않는다면 update with rebase를 해줘야 한다.

PR 페이지에 버튼이 또 있다.

충돌나는 파일이 없다면 그냥 저 Update with rebase 버튼을 누르는 것만으로 끝이다.

그런데 여기에서도 컨플릭트가 뜰 수 있다.

이럴 때는 로컬에서 수동으로 리베이스를 해줘야 한다. 그 방법을 간략하게 정리해보려 한다.




conflict 해결하기

먼저 내가 원래 작업했던 브랜치로 이동한다.

그리고 git fetch origin으로 최신 내역을 한번 받아온 다음에, git rebase origin을 때린다.
이건 현재 브랜치를 origin 브랜치의 최신 커밋으로 리베이스해준다. 현재 내 브랜치의 커밋들을 origin 브랜치의 최신 커밋 위에 정리돼서 깔끔한 커밋 히스토리를 유지할 수 있게 해주는 것이다.

그럼 충돌이 잔뜩 발생할 것인데

적절히 병합해서

커밋찍고

리베이스를 완료해주면 된다.

그리고 리베이스를 다시 열어서 스쿼시로 적절히 메세지를 뭉치고 정리해주면 끝이다.

force push



https://stackoverflow.com/questions/69839124/update-branch-with-rebase-instead-of-merge