코딩과 결혼합니다

branch push 거부 (Updates were rejected because the tip of your current branch is behind) 본문

2세/Git

branch push 거부 (Updates were rejected because the tip of your current branch is behind)

코딩러버 2024. 7. 27. 19:37
728x90

상황

브랜치에서 새로운 코드를 작성 - commit 후 원격 저장소로 push를 날렸는데 push가 거부되는 오류가 발생하였다.

$ git push
To https://github.com/lodalee/jpashop_prac.git
 ! [rejected]        feature/category-entity -> feature/category-entity (non-fast-forward)
error: failed to push some refs to 'https://github.com/lodalee/jpashop_prac.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

터미널을 확인해 보았을 때에는 위와 같은 로그가 생겼으며,

영어 울렁증이 있기에,, chat GPT의 도움을 받았다.


원인

현재 로컬 브랜치가 원격 브랜치보다 뒤에 위치해 있어 푸시가 거부된 것이라고 한다.

원격 브랜치에 이미 새로운 커밋이 존재하는데 이를 로컬 브랜치에 병합하지 않은 채로 또 다른 커밋을 만들어 push 하려 했던 것이다.


해결

1. 원격 변경사항을 병합

git pull origin feature/category-entity


이 명령어로 원격 브랜치의 변경 사항을 로컬 브랜치에 병합한다. 나는 여기서 충돌이 발생하여 이를 해결한 뒤에 변경 사항을 커밋하였다.

 

2. 충돌 해결 후 커밋&푸시

# 충돌 해결 후 파일 스테이징
git add .

# 병합 완료 커밋
git commit -m "fix: resolve merge conflicts"

# 변경사항 푸시
git push origin feature/category-entity

 

 

3. 충돌이 없다면 (2)의 과정은 생략하고 바로 push 하면 된다.

git push origin feature/category-entity

아직은 git을 다루는 게 헷갈리기도 하고 익숙하지 않다. 하지만 이전보다는 원인이나 해결방법을 봤을 때에 이해도가 훨씬  빨라진 느낌이 든다. 다음에 이와 같은 상황이 다시 일어났을 때에 잘 해결할 수 있을 것 같다.

 

+

 

혼자서 해보는 것이긴 하지만, 브랜치 관리에 커밋 -> 푸시 -> 풀리퀘스트 등등 반복적으로 해봄으로써 협업에 대한 이해도를 높이고 있다. 나중에 팀원들과 함께 협업할 때에도 큰 도움이 될 것 같다.