fatal : 관계없는 커밋 내역의 병합을 거부합니다 (오류해결)

돌리의 하루·2023년 8월 31일
0

pre-onboarding에 제출할 과제를 만들다가,

원격저장소를 설정하고,

git remote add origin git-url

git push -u origin master

로 설정한게 기억나, -u 명령어에 대해 찾아보았다.

u는 upstream의 약자로, 매번 명시적으로 원격분기를 설정할 필요 없이, 사용자가 상호작용하려는 의도의 명령어이다.

평소대로 commit 과 함께 push하려던 나는 -u옵션을 설정한게 기억나서, git push로 간편하게 push하려고 했었다.

그런데 갑자기 내 원격 저장소에 main branch가 생겼고, 내가 한 오늘치의 커밋이 master가 아닌 main브랜치로 옮겨졌다.

졸지에 나는 어제까지 작업한 master브랜치와, 오늘 작업한 분량의 main브랜치를 둘 다 가지게 된 것이다.

나는 두 브랜치의 합친 커밋 내역을 보고 싶었지, 따로 보고싶지 않았다.....😢그래서 병합할 방법을 찾아보게 되었다.

  • git의 기본 브랜치가 master에서 main으로 변경된 이유는 노예제도와 관련된 부정적인 의미를 피하기 위해서 변경했다고 한다. 아마 이런 이유로 내가 오늘 겪었던 오류가 생긴것같다. 일정 시점 이후로 깃아이디를 만들었다면 기본 branch가 main이겠지만, 나는 아이디를 만든 시점이 그보다 예전이어서 기본 브랜치가 master인 repository가 많다.

처음에는 단순히 병합하면 되겠지! 하면서 각자의 브랜치를

git fetch origin

git pull origin '브랜치명'

한 후 병합시도 했었다.

하지만 병합을 시도하자, 이런 오류가 떴다.

이런 오류는 처음 봐서, 이리저리 찾아본 후 다시 시도해봤는데,

내가 한 시도는

git merge main --allow-unrelated-histories

이었다. branch는 master에서 시도했다.

두 브랜치가 공통의 조상이 없을때도 병합을 허용하는 옵션이다.

나는 혼자 진행하는 프로젝트였기 때문에 고민없이 썼지만,

공동프로젝트일 경우 충분한 상의와 함께 사용을 고려해야 할 것 같다.

위의 명령어를 쓴 후, 다시 push 해주었더니 잘 들어갔다.

profile
진화중인 돌리입니다 :>

0개의 댓글