[Git] non-fast-forward 오류 발생과 해결 방법

tndkzjd·2024년 3월 12일

오류 발생

개인 프로젝트 작업을 원격 저장소에 푸시 할 때뿐만 아니라, 여러 사람이 함께 작업하는 협업 환경에서도 발생 했습니다.

팀원 A가 새로운 기능 개발해서 로컬 저장소에 커밋을 했는데,
동시에 팀원 B도 버그를 수정하고 원격 저장소에 푸시 했습니다.
팀원 A가 자신 로컬 변경 사항을 원격 저장소에 푸시 하려고 할 때, non-fast-forward 오류 발생

만약 이럴 경우 먼저 원격 저장소의 변경 사항을 로컬 저장소로 풀하면 되는데요.
이 과정에서 병합이 실패하면 수동으로 충돌을 해결한 후 다시 푸시해야 합니다.
저 같은 경우는 풀도 안 돼서 매번 충돌 해결하고 푸시 했던 기억이...😭

원인

구글링 해 본 결과, 로컬 저장소와 원격 저장소가 서로 관련 없거나 공통의 기반이 없는 경우에 발생한다고 합니다.

💡해결 방법


상단 Window 메뉴에서 Rerspective - Git Repositories - Other 클릭합니다.

Git Repositories 창에서 원하는 리포지토리의 Remotes -> origin을 선택하고, Configure Fetch를 클릭합니다.


창이 뜨게 됩니다. 여기서 여기서 우측에 있는 버튼 중 가장 아래에 있는 Advanced...를 선택합니다.


이 때 Specifications for fetch에 오류 발생 했던 게 fetch 경로가 떠있는데 Remove를 통해 지워줍니다.


그런 다음 Source Ref을 통해 새로운 fetch 경로를 선택하고 Add Spec을 통해 추가해준 다음 Finish 클릭 후


새 창이 뜨면, 설정을 다시 한 번 검토하고 Save and Fetch 버튼을 눌러 새로운 설정으로 fetch 작업을 실행합니다.


Git Repositories 창에 원하는 리포지토리 Branches-Local-master 우 클릭 해서 Merge 누르게 되면


창이 뜹니다. Commit 하고자 하는게 맞는지 다시 한번 확인 후 Merge 클릭합니다.


이 때 Merge Result 창이 뜨는데 OK 누른 후


Package Explorer 창으로 돌아오고 난 뒤 Commit 하고자 하는 프로젝트 우 클릭 Team-Remote-Push... 하게 되면

올리고자 하는 리포지토리가 맞는지 확인 하고 Next 눌러줍니다.


그런 다음 Add Spec 을 통해 Source ref 선택해준 후 Update 가 맞는지 확인 해준 다음 Next 이동합니다.


이렇게 하게 되면 변경된 Fetch 설정 기반으로 원격 리포지토리에 Push가 된 걸 볼 수 있습니다.

profile

0개의 댓글