Repository에 'main' branch로 push하기

서 진·2022년 2월 10일
0

개발 노트

목록 보기
1/2

안 까먹으려고 적어두는 지옥의 git push...

😇 난관에 봉착

깃허브 default branch는 main인데 아무 생각없이 master로 push 해버렸고
원하지 않았던 branch가 만들어져버림...

  • pull request로 수습해보려 했으나 협업이 아니라서 안됨
  • 그래서 그냥 master는 놔두고 main에 하자 하고 git push -u orgin main 갈겼지만 실패...

🧐 branch 이름을 바꿔보자

branch 이름은 mater에서 main으로 바꿔주면 된다길래 git branch -m main 를 넣었다.
순조롭게 branch 이름이 바껴서 다시 git push -u orgin main를 갈겼다 !

결과는

실패...
아래의 오류가 떴다.

error: failed to push some refs to '깃헙 주소'

오류가 뜨면서 밑에 (e.g., 'git pull ...') before pushing again 라고 힌트가 뜬다.
말 그대로 push하기 전 pull을 하라는 말이다.


☑️ 왜 그래야하나 하고 찾아보니
리드미를 이미 생성해둔 레포지토리였기 때문이었다!

🤔 pull을 시도해보자

친절하게 힌트로 pull을 하라길래 git pull orgin main 을 시도했다 !

결과는

성공할 줄 알았으나 실패... 😊 🔥
아래의 오류가 떴다.

fatal: refusing to merge unrelated histories

이것도 역시 힌트가 떴는데 도통 무슨 말인지 모르겠어서 영원한 친구 구글을 켰다..

merge가 거부되었다는 것인데, 서로 연관성이 없기 때문에 거부한거라고 한다.

내 상황은

  • push & pull 하고자 하는 레포지토리에 어떤 파일들이 이미 올라가져 있었고
  • 그 파일들은 현재 작업 중인 branch에는 전부 없는 파일이었다.

즉, 원격 저장소와 로컬 저장소 간의 공통 존재가 없었다는 의미이다.

pull 명령어는 fetch + merge 작업을 한번에 처리하는 명령어인데,
여기서 fetch는 됐으나 merge는 공통으로 가지고 있는 commit이 없기 때문에 병합을 거부한 것이다.

이 상황을 해결하려면 공통으로 가지고 있는 commit을 만들어 주어야 한다.

  • git clone을 사용해 원격 저장소를 복제
  • pull 명령에 옵션을 넣어 강제로 pull git pull origin main --allow-unrelated-histories

난 2번을 선택했다

😊 끝인 줄 알았지...

신나게 강제로 pull하고 merge가 되는 거 같았는데, 커밋 메세지를 적으라는 식의 페이지(?)가 떴다...
사실 또 오류가 나서 너무 충격에 휩싸이는 바람에 잘 안읽었지만

어쨌든

흔히 esc나 q키 ctlr+C 로 페이지들을 탈출하는데 얘는 안됐다...
처음에는 아예 뭐를 잘 못 건들여서 난리가 났고 수습한 뒤 탈출을 시도했으나

You have not concluded your merge (MERGE_HEAD exists)

오류가 났다 😙

없는게 없는 구글링으로 해결을 했다.
이게 merge를 하는 과정에서 conflict가 일어나서 나는 오류라고 한다.
그래서 해결하려면,

  • merge 취소하기 git merge --abort
  • 다시 내려 받기 git pull -u origin main

하면 된다.

아마 다시 내려 받으면 정체 모를 페이지가 뜨는데
차분하게 q키를 갈기다보면
글자를 작성할 수 있게 되고 거기에 :wq 쓰고 enter를 누르면 탈출할 수 있다.


드디어 main branch에 push 성공했다...✨

0개의 댓글