<aside> 💡
fast-forward 병합이 불가능할 때 나타나는 메시지인데, 원인과 해결 과정을 정확히 이해하면 부담 없이 대처할 수 있다.
</aside>
“Not possible to fast-forward”는
현재 브랜치와 병합 대상 브랜치 사이에 직선으로 연결할 수 없는 커밋 이력이 있어서 fast‐forward 방식으로 병합할 수 없다는 뜻이다.
Git이 기본적으로 fast‐forward만 허용하도록 설정된 상태에서 이 상황이 발생하면, 병합을 중단(abort)하고 위 메시지를 출력한다. (
git pull
orgit merge
)
git config pull.ff only
를 통해 pull의 기본 옵션을 ff-only로 설정해놓은 경우 발생할 수 있는 에러다.
pull하려는 원격저장소의 브랜치와 로컬저장소의 브랜치가 fast-forward 관계가 아닐 때에 발생한다. 원격저장소의 새로운 commit이 존재하는데 git pull을 하지 않은 상태에서 로컬저장소에 새로운 commit을 했다면 해당 에러가 발생할 것이다.
로컬 브랜치와 리모트(또는 다른 로컬) 브랜치에 각자 다른 커밋이 추가된 경우
예를 들어, main
브랜치에 A→B 커밋이 있고, feature
브랜치에 C 커밋이 추가됐을 때
B ←─── main
/
A───
\\
C ←─── feature
이 둘을 단순히 fast‐forward 방식으로 연결할 수 없다.
-ff-only
설정git merge
의 기본 설정이 -ff-only
인 경우