[GitHub] git push할 때 오류 (error: failed to push some refs to) 해결 방법

🐧코딩하는 애기 펭귄·2023년 10월 7일
1

개요

인텔리제이에서 백준을 풀다가 백준 디렉토리가 저장된 위치가 적합하지 않은 것 같아 윈도우에서 디렉토리를 드래그 앤 드롭으로 옮겼다. 이후 백준을 풀고 깃허브에 push 하려고 하니 계속 푸시가 거절당하는 것이었다.


오류1 - error: failed to push some refs to

error: failed to push some refs to 오류가 발생하며 푸시가 자꾸 거절당하는 것이다.

찾아보니 이는 원격저장소(github)에 내 로컬(내컴퓨터)에는 없는 파일이 있을 때 내 파일을 push 할 면 발생하는 오류이다.

이럴땐 원격저장소에서 내 로컬에 저장하지 않은 파일을 pull한 후 원격저장소에 다시 push를 해야한다.

이는 깃에서 디렉토리 내 파일간의 버전 충돌을 막기 위해 애시당초 푸쉬가 불가능하도록 막아둔 것이다.

만약 A라는 사람이 내 컴퓨터(local)에서 f1.py파일을 수정하였다. 이후 github에 수정한 내용을 push하려고 했지만, 팀원B가 f2.py 파일을 올려놨다.
이 경우 A의 push가 제한된다.

이런 경우 먼저 원격저장소에 f2.py를 내 로컬로 가져와야된다.
즉 원격저장소를 pull 해야한다.

git pull {원격저장소별칭 보통 origin이라고 함} master

pull을 하면 A의 로컬에서는 기존에 있던 f1.py 파일에 f2.py 추가된 상태가 된다.

오케이 문제를 알았으니 pull 하고 push 드가자~~


오류2 - fatal: refusing to merge unrelated

해당 솔루션대로 pull을 하려고 하니, 또 다른 오류가 발생했다.

fatal: refusing to merge unrelated histories 오류가 발생하며 merge가 거부당하는 것이다.

찾아보니 깃허브에 README 를 추가하거나 License 파일을 추가하면 원격지 저장소에는 새로운 커밋 이력이 생기는데, 이 상태에서 local 저장소에 있는 걸 푸시할 경우 로컬 저장소에는 리모트의 커밋 이력이 없으므로 이 에러가 발생한다고 한다.

아마도 아까 전에 push가 자꾸 안 돼서 깃허브 사이트에서 윈도우 폴더를 드래그 앤 드롭으로 넣은 것이 잘못되어 발생한 것 같다.

이 문제를 해결하기 위해선 git pull --allow-unrelated-histories REMOTE BRANCH 명령어를 입력하면 된다고 한다. remote 이름이 origin 이고 branch 가 main 이면 다음 명령을 실행한다.

git pull --allow-unrelated-histories origin main

해당 명령어를 입력하여 pull에 성공하고, 다시 깃허브로 push 해보니 잘 간다!! 😊

0개의 댓글

관련 채용 정보