ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Github] main and branch are entirely different commit histories 해결
    개발 일기/오류 일기 2023. 12. 30. 23:18
    728x90

     

     

     

     todo 작업을 하다가 이런 오류가 났습니다. 사실 이런 오류? 는 정말 자주 떠서 더 화나는 것 같아요. 나는 풀리퀘하고 main에 머지를 하고 싶은데 못 하겠다고 하니까 열이 받습니다. 게다가 이 이슈 때문에 저장소를 한 번 갈아엎은 적이 있어서 이번에는 꼭 해결해야겠다 싶었습니다. 그런데 이게 뭐지... 검색을 해도 다 master가 main으로 연동이 안 되어있어서 다른 브랜치로 인식하기 때문에 안 된다는 글만 수두룩해요. 저는 이 문제가 아니고 main과 다른 branch의 문제인데? 너무 답답한 마음에 스택 오버플로우에도 가입해서 물어봤습니다. 

    https://stackoverflow.com/questions/77734938/main-and-branch-are-entirely-different-commit-histories

     

    main and branch are entirely different commit histories

    This is my git graph enter image description here Where the graph was disconnected, I changed the file I was working on. I was working on the file A by connecting it to origin, but I disconnected A's

    stackoverflow.com

     

     그래도 어째 해결한 것 같은데? 이 방법을 한 번 써보겠습니다. 얼렁뚱땅 어 됐네? 느낌이니 반신반의하면서 봐주세요.

     

     

    1. 문제

     서치를 하다보니 다들 깃 그래프를 올리시더라고요. 그래서 왜 이 둘이 다른 브랜치로 인식이 되는가 설명을 해주시는 걸 보고, 저도 그래프를 다운로드하였습니다. 다운로드는 vscode의 extention에 가셔서 git graph를 검색해 최상단에 있는 걸 받아주시면 됩니다. 그러면 설치가 되는데, 파일의 깃 그래프를 보려면 

     

    깃 그래프 확인하기

     저 곳에서 깃 그래프 표시를 누르면 그동안의 깃 활동 그래프가 나옵니다. 우선 제 그래프를 보시면 

    그래프가 끊겨있음

     

     

     #1-2 아래로 그래프가 끊겨있습니다. 이때 저 끊어진 곳의 포인트를 눌러보면 "This commit is not in HEAD" 였나 비슷한 설명이 있었습니다. 그래서 저 두 브랜치를 잇고자 이것저것 검색해 봤는데 역시나 아무것도 안 뜹니다. 다들 커밋을 연결하고 계시는데 뭔가 커밋을 연결한다고 될 것 같지는 않아 보였어요.

     

     여담으로 저 때 왜 끊어졌지? 생각해 보면, momentum 클론 웹 2번 글에서도 말했지만 리뉴얼 때문인 것 같습니다. 리뉴얼하면서 완전히 새로 작업하기 위해 새 파일을 만들고, 본래 작업하던 파일에서 origin을 끊고, 새 파일에 origin을 연결해 주었습니다. 그래서 끊긴 것 같아요.

     

     

    2. 접근

     

     그러다 문득 생각이 났습니다. 대충 머지하면서 브랜치가 저렇게 이어지는 것 같은데, main과 branch가 완전히 다르면 머지했을 때 이어진다는 거 아님? 그러면 된 거 아님? 이런 생각이 들었습니다. 그래서 머지를 강제로 한 번 해보기로 했습니다.

     

    git merge branch

     

     

     대충 이렇게 쳤는데 "refusing to merge unrelated histories"라는 오류가 났습니다. 해석해 보면 역시나 다른 브랜치라서 머지 못하겠는데요?입니다. 그리고 검색해 본 글에서는 풀을 먼저 해줘야 한다고 하길래 풀을 먼저 해줬습니다. 하지만 또 안 되길래 저거랑 같은 원인이겠거니 싶어 그냥 강제로 병합해 주기로 했습니다.

     

    git pull origin 브런치명 --allow-unrelated-histories

     

     

     강제로 풀리퀘를 해줬는데 또 "Pull is not possible because you have unmerged files"가 떴습니다. 진짜 못해먹겠다 싶은데... 검색해 보니 

     

    git status // 상태 확인
    git commit -am '커밋메시지'

     

     을 하라는 글이 있었습니다. 그래서 git status를 하니 package.json이 문제라고 떠서 그 부분을 뚝딱뚝딱 수정해 주었습니다. 그랬더니 얼레벌레 머지가 됐고

     

    붙이기 완!

     

     그래프가 잘 붙었습니다! 단점이 있다면 강제로 머지하고 해서 main의 원래 파일이 브랜치에 함께 왔다는 점이지만... 제 코드가 main에 올라간 것만으로도 행복합니다. 야호! 이제 나머지 오류들을 수정해야 해요... 파이팅.

    728x90
Designed by Tistory.