-
Git conflict rebase 하기Git 2022. 10. 13. 00:01반응형
This branch cannot be rebased due to conflicts
충돌이 났기 때문에 rebased를 할 수 없다고 합니다.
rebase는 git에 적용되는 base를 새롭게(re) 한다는 의미입니다.
이때 base는 현재 있는 branch가 나오기 전에 존재했던 commit이라고 생각하면 좋습니다.
원인
conflict가 나는 이유는 똑같은 파일을 합치려고 하는 브랜치와 합쳐지는 브랜치 모두에서 수정이 된 경우 발생하게 됩니다.
commit인 기본적으로 diff를 저장하게 됩니다.
diff의 결과를 모두 합치게 되면 현재의 코드가 만들어지게 됩니다.
이 commit들을 기반으로 브랜치를 따게 되면 그 시점이 base가 되고 그 base를 기준으로 우리의 소스코드를 합치는 과정에서 비교하게 됩니다.
해결법
우선 conflict가 해결된 commit을 되돌립니다.
이미 원격 저장소에 반영되었기 때문에 reset 또는 revert를 사용해야 합니다.
1. 바로 직전의 commit을 되돌립니다.
git reset --hard HEAD^ git push -f origin 브랜치이름
2. git rebase origin 수행
3. git status로 현재 상황 확인
4. 충돌난 부분 수정 vim README.md
이후에 git add readme.md
5. git rebase --contiue
6. git push -f origin 브랜치 이름
7. 정상적으로 rebase 완료
출처
https://baeji77.github.io/dev/git/etc/git-rebase-and-confilct-resolve/
Git rebase와 친해지기 (git conflict를 해결하는 방법 & upstream에서 rebase하기)
How to resolve git conflict by using git rebase
baeji77.github.io
https://jupiny.com/2019/03/19/revert-commits-in-remote-repository/
원격 저장소에 올라간 커밋 되돌리기
Git으로 버젼 관리를 하며 개발하다보면, 작성한 커밋들을 되돌려서 다시 이전 상태로 원상복구하고 싶은 경우가 한번쯤 있을 것이다. 만약 로컬까지만 저장된 커밋인 경우는 $ git reset 명령어를
jupiny.com
https://gist.github.com/scottyhq/299e4d36018a2f13acfb2528a1553002
GitHub PR Merge Conflict Resolution with Rebase
GitHub PR Merge Conflict Resolution with Rebase. GitHub Gist: instantly share code, notes, and snippets.
gist.github.com
'Git' 카테고리의 다른 글
Git 커밋 메시지 바꾸는 방법 (0) 2023.03.24 Git Bio에 개행문자 넣기 (0) 2022.10.17 Git 403 error 해결 방법 (0) 2022.09.28 Merge 와 Rebase란? (0) 2022.07.18 Git 커밋 메시지 컨벤션 (0) 2022.06.20