git error : ** and ** are entirely different commit histories.

repedore·2022년 6월 28일
0

error

목록 보기
1/1

팀원중 한명이 숨겨야 할 정보를 가진 파일을 실수로 올려두었다가 모든 commit 에서 그 파일을 지우고 합쳤을 때 발생 했던 문제이다.

이미 github 에는 force로 올라간 후였는데 문제가 심각했었다.
다른사람들이 pull을 받을 때 무려 main 을 포함한 모든 commit이 각각 branch대로 두개가 되어버렸기 때문이다.
fork 받은 github에서 pr이 날라가지 않았다.

한문장으로 github에 올라가있는 origin의 head 와 fork의 head 가 달려져버렸다.

서로가 만날 수 없는 상황....

인터넷에는 rebase 명령어로 설명하고 있지만 조금 살펴본 결과 우리처럼 모든 commit이 똑같이 복제 되었을때 사용하기에는 무리라고 판단했다.(기본적으로 origin의 main commit 한개만 동떨어졌을때 사용하는것 같더라...)
rebase 에 추후에 따로 알아봐야 할 것 같다.

그래서 아직 pull을 하지 않은 다른 사람들의 프로젝트를 구해놓고(혹시 몰라서 백업용) 아래와 같이 해결했다.

  • 어찌되었든 origin을 이전으로 돌리지 않고 지금 상태를 유지 할것이니 냅둔다.
  • origin을 새롭게 clone 한다.
  • git add remote myrepo <fork 주소>
  • git push -f myrepo main
  • git push -f myrepo dev

정리를 하니까 생각보다 간단하게 처리가 된거 같은데 유사한 에러를 구글링으로 쉽게 발견하지 못해서 매우 당황했었다.
똑같은 commit이 두개씩 보이는데다 github 페이지에서 pr이 날라가지 않았으니 말이다.
하지만 다행이도 팀원들이 이슈공유를 빠르게 해줘서 해결 할 수 있었다.

profile
관심사는 시장 분석과 자동화입니다. 펌웨어 개발자로 일을 하고 있었으나 더 깊은 백엔드 지식을 학습하고 싶어서 블록체인(백엔드)개발자로 전향을 준비중에 있습니다. 다양한 분야에서 새로운 지식을 쉽게 받아들이는 편이고 적용하려고 노력합니다.

0개의 댓글