[Git] ! [rejected] master -> master (fetch first)

gong_ryong·2023년 11월 12일
0

평화롭게 Git으로 팀프로젝트 관리를 하던 와중 이런 에러가 발생했습니다.

! [rejected]   master -> master (fetch first)
error: failed to push some refs to '<Git 레포지토리명>'

성질이 급한 나머지 구글링을 통해 강제로 push를 시도했는데요..

git push origin +master
git push origin -master --force

.. 등의 커맨드로 강제 푸시가 가능합니다.

프로젝트 초기 단계라서 별 문제는 없었지만 찜찜해서 나중에 에러의 원인을 찾아봤습니다.

에러 발생 이유는 콘솔에 적힌 그대로 fetch를 하지 않아서입니다. fetch는 원격 저장소의 브랜치에 생긴 변경 사항을 찾아내는 작업입니다(fetch change). 그 후 merge를 통해 fetch한 변경 사항과 본래 내용을 병합해줘야 합니다. 똑같은 파일에 대해 내용이 다른 conflict가 발생한다면 git에서 어떤 내용을 반영할지 결정할 수 있습니다. 아니면 pull을 통해 fetch+merge를 동시에 할 수 있습니다. 이러한 정상적인 병합 과정이 끝나면 push가 가능해집니다.

git fetch origin
git merge origin/master 
// 
git pull origin master
-> 
commit, push

규모가 큰 프로젝트에서 귀찮다고 push --force를 떄려버리면 커밋이 완전히 얽히는 불상사가 발생할 수 있겠죠?

profile
비전공자의 비전공자를 위한 velog

0개의 댓글