Not possible to fast-forward, aborting. 에러 해결

이은지·2022년 7월 31일
6

git 댕고수🐶

목록 보기
5/5
post-thumbnail

git config pull.ff only 를 통해 pull의 기본 옵션을 ff-only로 설정해놓은 경우 발생할 수 있는 에러다.

pull하려는 원격저장소의 브랜치와 로컬저장소의 브랜치가 fast-forward 관계가 아닐 때에 발생한다. 원격저장소의 새로운 commit이 존재하는데 git pull을 하지 않은 상태에서 로컬저장소에 새로운 commit을 했다면 해당 에러가 발생할 것이다. git pull을 습관화하자!

해결 방법

git pull --rebase

rebase 옵션으로 pull을 진행한다.
근데 이때 rebase로 인한 conflict가 발생할 수 있다!

conflict 해결하기

원격저장소의 main 브랜치와 로컬저장소의 main 브랜치가 동일한 파일을 수정한 상황을 가정하자. 해당 상황에서 우리가 마주하게 되는 에러의 순서는 아래와 같을 것이다.

  1. 로컬저장소에서 수정 사항을 commit 하고, push를 한다.
  2. 그 결과 원격저장소와 로컬저장소의 상태가 다르기 때문에 pull을 먼저 하라는 에러가 발생한다.
  3. 2번 에러를 해결하기 위해 pull을 하게 되면 ff 관계가 아니기 때문에 pull이 중단된다.
  4. 3번 에러를 해결하기 위해 git pull --rebase 를 할 경우 conflict가 발생한다.

이때 당황하지 말고 conflict가 발생한 파일을 잘 수정해주면 된다. 수정사항을 git add - git commit 하고, 그 다음 git rebase —continue 로 rebase를 마무리한다.

그럼 이제 다시 git push 를 하면 된다!

내가 로컬에서 수정하려는 파일이 원격저장소에서 다른 사람들에 의해 수정되었을 수 있으니 작업을 하기 전에는 git pull을 습관화하도록 하자. 정리하자면 원격저장소의 가장 최근 commit에서부터 브랜치를 따야 fast-forward 상태가 유지되어 해당 에러가 발생하지 않는다는 것이다. 이를 위해 시작 전에 git pull을 해야 하는 거고.

1개의 댓글

comment-user-thumbnail
2023년 10월 13일

참고가 되었습니다!

답글 달기