TIL | rebase 도중 confilct 발생했을 때 해결

0l0l·2021년 9월 24일
0

TIL

목록 보기
75/86

feature/main 브랜치에 쌓인 커밋을 하나로 정리하기 위해 rebase 시도

$ git rebase -i main
이후 confilct이 발생
(rebase 도중 충돌이 일어날 경우 마치 코드가 날아간 것 처럼 보일 수 있으나, 코드가 사라진 것이 아니라 코드를 합치던 도중 중단된 것)
충돌 해결하고, add → commit했음
(여기서 문제인 듯... commit을 하지 않아도 되는 듯하다)

충돌 발생 시 에디터에서 충돌 해결 후 git add .git rebase --continue 를 반복하되, ✨commit을 해줄 필요는 없습니다.

이미 PR에 올렸으므로 -f 옵션을 추가해야하나 아래와 같이 시도해 봄
$ git push origin feature/main
에러가 발생해야하는데 자연스럽게 push가 되고 commit 개수대로 올라감 => rebase 실패!😱

rebase 실패


만약 잘못 rebase를 했다면, git rebase --abort (리베이스 도중) 혹은 git reflog 로 돌아갈 지점을 찾은 후 git reset --hard 돌아갈지점 (리베이스 완료 후) 명령어로 복구할 수 있습니다.

위의 내용을 참고하여 git reset --hard (rebase 이전 시점) 명령어를 이용해 시도해보았습니다.

$ git reflog
reflog

commit 명령어를 작성하여 잘못 push가 되었기 때문에 commit 이전 시점으로 되돌아가보겠습니다.

$ git reset --hard 0f083c3
reset 첫번째 시도

reset을 이용해 돌아갈 시점이 현재 시점이라 아무 변화없음

바로 이전 시점으로 다시 시도
$ git reset --hard e46a0f7

하... commit push한 파일들 다 날라간 듯...
아직 rebase 진행 중이라
$ git rebase --abort
명령어를 통해 일단 rebase 종료

feature/main 브랜치인 상태에서 마지막 커밋 시점으로 rebase 다시 시도
rebase 두번째 시도

$ git reset --hard 6e-5518

아까 발생했던 rebase 진행 중 coflict 났던 때로 돌아옴!
conflict 발생했던 때로 돌아옴

$ git add .
$ git rebase -—continue
(commit 명령어 때려치워!)

다시이... conflict 해결하고
$ git add .
$ git commit -m "커밋 메시지"
$ git rebase -i main

rebase 중

rebase 성공!
Successfully

$ git push origin feature/main -f
마지막 push 작업까지 하면!
force push

commit 1 로 변경 완료!
커밋 1개

profile
천방지축 빙글빙글

0개의 댓글