[Git] Git Error : failed to push some refs to '' 발생시 조치 방법

Seong Ho Kim·2024년 1월 14일
0

Git & Github

목록 보기
4/5
post-thumbnail

1. Git Error : failed to push some refs to '' 발생 원인

git push origin '브랜치이름'
  • 먼저 다음과 같이 프로젝트를 git에 연결된 저장소로 프로젝트를 올린다.

1-1) 정상적으로 push 된 경우

Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 422 bytes | 422.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
  • 평상시라면 정상적으로 올라갔을때 다음과 같이 표시된다.

1-2) push중 에러가 발생 할경우

! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to '프로젝트 git 주소'
  • 만일 이런 에러가 나올 경우 작성한 local branch 코드가 Github remote branch 저장소 코드보다 앞서 있는 상태에서 충돌이 발생할것을 막기 위해 다음과 같은 에러를 발생시키는 것이다.

2. failed to push some refs to '' 해결 방법

2-1) git pull 사용

git pull origin '브랜치 이름'
git push origin '브랜치 이름'
  • 주로 이런 상황의 경우에는 git pull로 해결 가능한 경우가 대부분이다.

2-1-1) "fatal: Need to specify how to reconcile divergent branches." 가 나왔을 경우

fatal: Need to specify how to reconcile divergent branches.
  • git pull을 사용했음에도 불구하고 위 코드에 있는 문구가 나올경우 다음과 같이 조치해야한다. 먼저 "fatal: Need to specify how to reconcile divergent branches." 는 서로 다른 브랜치 간에 일어난 변경 사항이 충돌해서 생기는 상황을 말하는 메세지이다.
git merge origin '브랜치 이름'
  • git merge 명령어를 사용하여 원격 저장소의 main 브랜치의 변경사항을 현재 로컬 브랜치로 가져와서 병합 하는 방법을 사용하거나
git pull --rebase origin '브랜치 이름'
  • rebase 명령어를 사용해서 현재 브랜치의 변경사항을 원격 저장소의 브랜치 위에 쌓아서 해결하는 방법으로 진행할 수 있다.
    (여기서 git rebase란? git에서 브랜치의 기록을 재정렬하거나 합치는 명령어이다. 주로 다른 브랜치의 변경사항을 현재 브랜치에 적용하거나 커밋 기록을 깔끔하게 유지하기 위해 사용하는 경우가 많다.)
git push origin '브랜치 이름'
  • 다음과 같이 수행후 push를 시도하면?
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 422 bytes | 422.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
  • 이렇게 나오면 성공적으로 반영된것이다.

2-2) git 강제 push

  • 위와 같은 방법이외에 다른 방법으로 시도해봤으나 해결할 방법이 마땅치 못할 경우, 임시 방편으로 강제적으로 push 해서 충돌단을 무시하고 저장소에 push 하는 방법이 있다.
git push origin '브랜치이름' --force
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 422 bytes | 422.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
  • 이 방법은 되도록이면 정 급한 상황 이외엔 사용하지 않는 걸 추천한다. 그 이유는 개인 프로젝트의 경우엔 단독으로 작업하기 때문에 괜찮을 수 있어도 팀 프로젝트 단위로 개발을 할경우 다른사람 코드가 삭제되거나 소스코드가 꼬여서 문제가 발생할 수 있기 때문이다.(하지만 개인 프로젝트에서도 이 방법을 사용하지 않는 걸 추천하는 바이다.) 따라서 팀 단위로 작업할 경우, 잘 확인하고 진행하시는걸 추천한다.
profile
안녕하세요 Junior UIUX Designer 입니다 😊

0개의 댓글