에러 내용
There isn't anything to compare
main and mybranch are entirely different commit histories.
아마 이 키워드로 들어왔다면, 다른 프로젝트를 가져와서 이어서 작업을 완료하고..! PR을 보내려다가 응? 한 경우일 듯 하다.사실 내가 그랬다..ㅎㅎ😭 과제 전형에 응시하면서 열심히 작업하고 PR을 보내려고 하니, PR 생성이 활성화되지 않더라.
PR을 보내기 전까지 git push origin *** 까지는 가능했어서, 과제를 마치기 전까지도 커밋이 끊긴 것도 몰랐다.
동일한 현상을 경험하신 https://jihyewoo.tistory.com/195 블로그 포스팅을 참고했다.
문제와 해결
(이 화면은 vscode에서 git graph 확장파일을 다운받으면 된다!)
위 그림처럼 맨 처음 origin/main 브랜치의 커밋과 내가 생성한 master 브랜치의 커밋이 끊겨있다.
그래서 master 브랜치에서 분기한 task 브랜치의 변경 내용들이 github에 remote branch로 존재하지만,
task 브랜치와 origin/main 브랜치가 연결점이 없다보니, 위에서 보인 에러를 보여주는 것이다.
결국 간단하다. master 브랜치와 origin/main 브랜치를 연결하면 main과 task도 연결되므로 끝날 일이다.
git switch master
// 마스터 브랜치로 이동(내 로컬에서는 마스터 브랜치 최근 커밋이 "CRA로 리액트 프로젝트 생성"이었다.)
// 만약 마스터 브랜치의 최근 커밋이 끊긴 커밋이 아니라면, 끊긴 커밋 위치로 이동하면 된다.
git branch bridge // 끊긴 커밋 위치에서 새로운 브랜치 bridge를 만든다.
git switch bridge // 새로운 브랜치 bridge로 이동한다.
git rebase origin/main // 연결할 커밋이 있는 브랜치를 지정한다.
// 이 때 conflict가 발생할 수도 있다. 적절히 처리하면서 기존 commit에 반영해주고,
git switch master // master 브랜치로 이동
git rebase bridge // bridge를 master 브랜치에 rebase한다.
git push origin main // 깃허브의 main 브랜치에 현재 커밋을 날린다. 그럼 끊긴 부분이 연결된다.
사실, 과제를 내야하는 상황이라 origin/main 브랜치를 건드리면 안됐지만..
(main 브랜치를 건드리지 않고 별도의 브랜치 A에서 A -> main 으로 PR을 날렸어야 했다.)
이게 최선이었다..
그래서 결국 main 브랜치에 "CRA로 리액트 프로젝트 설정" 이라는 새로운 커밋이 반영되었다.
이후로는 origin main 브랜치와 local master 브랜치가 연결되었으므로,
local master 브랜치를 기반으로 하는 task 브랜치는 main 브랜치에 PR을 날릴 수 있었다.
'Error' 카테고리의 다른 글
[Debug] IDE로 리액트 프로젝트를 디버깅해보자. (0) | 2022.12.12 |
---|---|
[에러] netlify에서 nextJS의 "getServerSideProps" can not be exported 해결하기 (0) | 2022.06.06 |
[에러] Safari invalid Date (or NaN) 해결하기 (0) | 2022.05.27 |