컴퓨터/기타

git - fatal: 정방향이 불가능하므로, 중지합니다.

달서비 2023. 10. 26. 22:00

최근에 회사에서 fetch된 데이터를 pull로 가지고 오려고 하였으나 현재 사용 중인 데이터와 commit 이력이 꼬여 에러가 발생했습니다.

fatal: 정방향이 불가능하므로, 중지합니다.

 

우선 해당 에러의 원인은 remote 저장소가 local 저장소보다 앞서 있고 merge할 게 있을 때 데이터 충돌로 인하여 에러를 발생하는 것입니다. 

 

제가 진행한 방식은 다음과 같습니다.

git add .
git commit -m "rebase a data"
git pull --rebase

지금까지의 변경 사항을 데이터를 commit하고 이전의 데이터를 pull --rebase로 변경 사항을 가져와 commit이력 사항을 재배치하였습니다. 상황에 따라 git pull --rebase만 처리하여 가져올 수 있습니다.

 

git pull 과 git pull --rebase의 차이점

우선 git pullgit pull --rebase는 둘 다 원격 저장소에 변경 사항을 가져와 로컬 저장소와 병합하는 명령어입니다.

git pull부터 설명하자면 두 가지 작업을 수행합니다.

  •  git fetch :  원격 저장소에서 변경 사항을 가져와 로컬 브랜치의 원격 추적 브랜치를 업데이트합니다.
  • git merge : 가져온 변경 사항을 현재 작업 중인 로컬 브랜치에 병합합니다. 그리고 병합 commit을 생성합니다.

두과정을 통하여 로컬 브랜치가 자동으로 병합됩니다.

git pull 상태에서의 이력

 

git pull --rebase명령은 한가지 차이점이 있습니다.

  • git rebase: 가져온 변경 사항을 현재 작업 중인 로컬 브랜치의 변경 사항과 재배치합니다. 이것은 새로운 커밋을 생성하지 않고 변경 사항을 이전 커밋의 뒤에 붙입니다.

git pull --rebase 상태에서의 이력

두 명령어의 차이점은 commit 이력을 전부 관리할지 아니면 선형적으로 관리할지에 대한 차이가 있습니다. 이력 관리에 따라 사용하면 됩니다. 저는 수정 이력을 간단하게 정리하고 싶어 git pull --rebase를 통해 정리 및 관리하였습니다.