github에 저장소를 만들고 기분좋게 파일들을 업로드하려는데,
자꾸 git push 에러가 발생해서 당황했다.
분명 어제만 해도 잘 됐는데..
만약 github 저장소를 처음 만들 때 README.md 파일을 생성했다면
기존 로컬 저장소의 파일에 해당 파일이 없기 때문에 충돌하기 때문에 오류가 발생한다고 한다.
챗 GPT님께도 혹시나 다른 원인이 있는지도 물어봤다.
git push 명령을 실행할 때 발생하는 오류는 다양한 원인이 있을 수 있습니다.
가장 일반적인 오류 메시지와 그 원인은 다음과 같습니다.
1. "fatal: The current branch has no upstream branch." 오류
현재 브랜치가 업스트림 브랜치를 가지고 있지 않아서 발생하는 오류입니다.
이 경우에는 'git push --set-upstream <remote> <branch>' 명령으로 업스트림 브랜치를 설정해야 합니다.
2. "fatal: remote error: access denied" 오류
원격 저장소에 대한 권한이 없어서 발생하는 오류입니다. 이 경우에는 권한을 요청하거나,
권한이 있는 사용자가 로그인하여 작업을 수행해야 합니다.
3. "error: failed to push some refs to <remote>" 오류
'git push' 명령이 실패하여 발생하는 오류입니다. 이 경우에는 다른 원인들 중 하나일 가능성이 있습니다.
예를 들어, 로컬 저장소와 원격 저장소의 버전이 충돌하거나, 네트워크 연결이 불안정하여 전송이 실패한 경우일 수 있습니다.
4. "fatal: 'origin' does not appear to be a git repository" 오류
해당 원격 저장소가 존재하지 않아서 발생하는 오류입니다. 이 경우에는 원격 저장소의 URL이 잘못되었거나,
해당 원격 저장소가 삭제되었을 가능성이 있습니다.
5. "error: failed to push some refs to <remote>. hint: Updates were rejected
because a pushed branch tip is behind its remote counterpart." 오류
로컬 저장소와 원격 저장소의 버전이 다른 경우 발생하는 오류입니다. 이 경우에는 'git pull' 명령으로
원격 저장소의 내용을 가져와서 충돌을 해결한 후에 다시 'git push' 명령을 실행해야 합니다.
이외에도 다양한 오류 메시지가 있을 수 있으며, 발생한 오류 메시지를 자세히 확인하여 해당 원인을 파악해야 합니다.
일단 구글링해본 결과도 pull을 하고 push를 하라는 얘기가 많았는데 다른 방법도 가능한지 궁금해서 시도해봤다.
1. 깃헙 저장소에서 리드미 파일을 삭제하고 -f(강제로)로 push하기
구글링해서 찾은 git push -f origin main 을 그대로 썼는데 메세지에 origin을 못 찾는다는게
지금 생각해보면 origin 대신 깃헙 저장소 주소를 썼으면 해결됐을지도 모르겠다.
2. 로컬 저장소에서 리드미 파일을 만들고 git pull & git push 하기
결국 이 방법으로 해결했다. 하지만 한 번에 성공하진 않았다.
보니까 내가 생성하지 않은 브랜치가 있는건가 싶어서 git log 도 해보고
git add, git commit, git status 도 해봤지만 다른 브랜치는 확인되지 않았다.
다시 처음으로 돌아가는 마음으로 메세지들을 하나하나 분석하기 시작했다.
힌트에 merge하라는 얘기가 반복적으로 나와서 찾아보니
로컬 브랜치와 원격 저장소 브랜치가 서로 다른 경우에 이런 일이 발생한다고 한다.
그래서 그냥 git pull이 아닌 git config pull하라고 한건가 했다.
git pull origin main | 원격 저장소(origin)에서 로컬 브랜치(main)으로 변경사항을 가져오는 명령 즉, 업데이트를 한다. |
git config pull | Pull 작업을 기본 동작을 실행 rebase, fast-forward only 등 merge 방식을 설정 가능 |
라고 이해했는데 혹시 사실과 다른 내용이 있다면 언제든 의견 부탁드림니다.......
나중에 깃 기록이 비교적 보기 편하다는 rebase 방식으로 진행했다.
이후 git push까지 문제없이 진행했다.
와....정말 개발 공부하면서 느끼는거지만 뭐 하나 스무스하게 넘어가는게 없다.
물론 그걸 해결할 때의 희열은 말할 것도 없지만..^_^
저의 경험이 누군가에게 도움이 됐기를 바라며, 모두 즐코하세요-!
참고한 곳들
'코딩 생활' 카테고리의 다른 글
[npm] npm install할 때 --save는 꼭 필요한걸까? (0) | 2023.04.13 |
---|---|
[깃을 마스터해보쟈] 3. 깃 사용하기 (0) | 2023.04.10 |
[깃을 마스터해보쟈] 2. 깃 설치하기 (mac) (0) | 2023.04.10 |
[깃을 마스터해보쟈] 1. 깃이란? (0) | 2023.04.10 |
[프로그래머스 | JS] 레벨 0. 구슬을 나누는 경우의 수 (feat. 소수점 계산 오류) (0) | 2023.04.10 |
댓글