[Git 문제] 현재 브랜치의 끝이 리모트 브랜치보다 뒤에 있으므로 업데이트가 거부되었습니다 ???!!!

Mario
2 min readMay 18, 2019

이번 뿐만이 아니라, 가끔씩 이런 에러를 접하곤 했다. 그 때마다 주변의 엔지니어들의 도움으로 해결하곤 했지만 이번엔 나혼자 스스로 해결해보겠다는 생각으로 구글, 스택오버플로우 등 여러 자료를 바탕으로 해결을 해 나갔다.

원인 : 사실 아직까지도 이것이 무엇때문에 에러가 났는지 정확하게 이해할 수는 없다. 다만, 해결책을 알아냈고, 총 2가지 접근 방식이 있다는 사실을 알아냈다.

우선 , 해결에 앞서서 <git log — graph> 라는 명령어를 통해 지금까지 commit을 했던 내역들을 쭈욱~~살펴보았다. 내역을 보니, 현재 에러가 나고 있는 feature_team 브랜치 이름으로 과거에 커밋을 했던 내역이 있었다.

문제의 원인을 정확하게 알 수 없지만, feature_team 브랜치로 과거에 커밋했던 이력과 현재 내가 커밋을 하려고하는데 충돌이 발생해서 이러한 문제가 난다는 것을 짐작할 수 있었다.

따라서, 해결을 하는 방법을 총 2가지로 생각해 볼 수 있었다.

<해결 방법>

(1) Git Repository에서 과거 Commit내역 삭제하기 : 어차피 과거 커밋했던 것들을 다 날려버려도 상관 없다면, 내 레파지토리에 들어가서 feature_team 브랜치로 올렸던 과거 커밋 내역을 삭제하는 것이 가장 맘편한 방법일 것이다.

(2) Git push origin feature_team — force : 오늘 새로 배운 깃 명령어이다. Push 뒤에 — force 를 붙여주면, 과거 커밋 내역과 상관없이 지금 현재 커밋내용으로 덮어씌워 버리는 명령어이다.

두 가지의 방법 중 나는 2번 방법을 택했고, 다행히 문제가 해결되었다. 다만, 이 문제가 왜 발생하였는지에 대한 원인을 조금더 자세하게 알아볼 필요가 있을 것 같다.

--

--

Mario

Programmer / Photographer / Traveler / Humorous Guy