Tech Log

Github desktop unable to merge unrelated histories in this repository 이슈 본문

Git

Github desktop unable to merge unrelated histories in this repository 이슈

yuhee kim 2021. 11. 11. 08:34

desktop unable to merge unrelated histories in this repository

Git bash로 push 시키고 push된 것을 Github desktop에서도 반영시키려고 default branch에서 pull하려는데 이러한 문제가 발생했다.

default branch에 있는 파일과 전혀 관련없는 파일들(다른 branch에 있는)을 강제로 push시키고 desktop에서 pull하면 이런 결과가 나올 수 있다.

Git에서는 서로 관련 히스토리가 없는 프로젝트를 병합하는 것을 기본적으로는 허용하지 않는다. 따라서 이와 같은 문제가 발생한 것이다. 

 

문제의 전말은, 안드로이드 스튜디오에서 master branch가 만들어져있었고 원격 저장소에는 master branch가 없었다. 그래서 안드로이드 스튜디오에서 push하니 master branch에 push가 되었고, 원격 저장소에는 master branch가 생성되면서 그곳에 파일들이 올라가게 되었다. 원래는 default branch인 main branch에 올라가야 하는데 master branch에 올라가 버린 것이다. 그래서 master와 main을 병합하려고 했다. 이때 main branch에는 readme 빼고는 아무 파일도 없었기 때문에 문제가 발생한 것이다. main과 master의 시작점이 다르면 이러한 문제가 발생한다. 그리고 github desktop이 아닌 웹사이트에 들어가서 main과 master를 pull request하려고 하면 애초에 두 branch가 전혀 다른 파일을 갖고 있어 병합이 안된다고 뜬다.

 

해결 방안은

  1. default branch를 변경시키기(원래 쓰려던 branch는 버린다. 가장 안전하고 간단한 방법이라고 생각하지만 근본적인 conflict는 해결하지 않는 방법인 것 같다) 
  2. Git bash에서 git pull --allow-unrelated-histories 쓰기 (서로 관련이 없는 프로젝트를 병합할 때 사용할 수 있다)
  3. 원격 저장소에서 git clone 해서 README.md 등 원격 저장소의 다른 파일들이 있는 상태에서 파일 작성하기

1번 방법은 Github 사이트에서 Settings-branches에서 default branch 창의 작은 화살표 버튼을 클릭하면 변경할 수 있다. (당연하지만 해당 repository의 권한이 있는 사람만 가능한 방법이다)

 

다음부터는 default branch를 잘 확인하고 commit해야겠다..그리고 현재 작업 중인 branch를 꼭 확인하고 commit 해야겠다. git bash에서 git branch를 입력하면 현재 작업 중인 branch를 확인할 수 있다.

 

참고

'Git' 카테고리의 다른 글

[Git] push  (0) 2022.06.09
Git commit 메시지 컨벤션  (0) 2022.02.02
Comments