-
fatal: 정방향이 불가능하므로, 중지합니다. 해결방법카테고리 없음 2025. 5. 21. 23:46
발생 배경
이 오류가 발생했던 상황은
dev의 최신 변경사항은 5월 5일인데 작업하려는 기능 브랜치의 마지막 작업일자는 4월 28일이였습니다.
작업하기 전에 dev의 변경사항을 기능 브랜치에 반영하고 작업하기 위해 git pull origin dev 명령어를 입력했을 때 발생했습니다.
발생 이유
git pull 명령어는 기본적으로 fast-forward 방식으로 merge 되는데 dev에 변경사항이 있었기 때문에 발생한 것이였습니다.
fast-forward 방식을 그림으로 나타내면 다음과 같습니다.
현재 제 상황은 그림에서 develop이 feature이고, main이 dev입니다.
그림을 보면 HEAD가 B → Y로 이동하였습니다.
쉽게 설명하면 main에 변경사항이 없을 경우 dev보고 “너가 이제부터 main이야” 라고 하는 것입니다.
fast-forward 방식에서 merge가 가능한 조건은 두 브랜치가 선형적으로 이어져 있을 경우입니다.
두 브랜치가 선형적이려면 main에 아무 변경사항이 없어야 합니다.
변경사항이 있으면 "fatal: 정방향이 불가능하므로 중지합니다." 오류가 뜨는 것입니다.
해결 방법
선형적이지 않은 두 브랜치 병합을 할 방법은 fast-forward 방식을 쓰지 않는 것입니다.
그래서 간단하게 git pull origin dev —no-ff 명령어를 통해 fast-forward 방식을 쓰지 않겠다고만 해줘도 merge commit을 하나 작성하고 merge할 수 있었습니다.
이건 좋은 상황이고, 만약 충돌이 발생한다면 현재 변경사항과 수신 변경사항을 비교하여 충돌을 어떻게 해결할지 충돌이 발생한 작업자들끼리 상의하여 해결하고 merge 해야합니다.