728x90
반응형
$ git pull
fatal: Not possible to fast-forward, aborting.
위 에러 메시지는 Git에서 git pull 명령어를 실행했을 때 발생하는 것으로, 현재 브랜치와 원격 브랜치 간의 변경 사항을 자동으로 빠르게 병합(fast-forward)할 수 없다는 뜻입니다. 이 문제는 주로 로컬 브랜치와 원격 브랜치가 서로 다른 커밋을 가지고 있어서 충돌이 발생하거나 병합이 필요한 상황에서 나타납니다. 아래 단계별로 해결 방법을 설명하겠습니다.
1. 상황 파악하기
먼저, 로컬과 원격 브랜치의 상태를 확인해야 합니다.
bash
WrapCopy
git fetch origin git log HEAD..origin/브랜치명
- git fetch는 원격 저장소의 최신 정보를 가져오지만 로컬 브랜치를 변경하지 않습니다.
- HEAD..origin/브랜치명은 로컬 브랜치에 없는 원격 브랜치의 커밋을 보여줍니다. (예: origin/main)
2. 해결 방법 선택
이 상황을 해결하는 주요 방법은 두 가지입니다: 리베이스(Rebase) 또는 병합(Merge).
옵션 1: 병합(Merge)으로 해결
원격 브랜치의 변경 사항을 로컬 브랜치에 병합합니다.
git pull --no-rebase
- 이 명령은 원격 브랜치의 변경 사항을 가져와 로컬 브랜치에 병합 커밋을 생성합니다.
- 충돌이 발생하면 Git이 충돌 파일을 표시하니, 수동으로 수정 후 다음을 실행하세요:
git add <수정된 파일> git commit
git push
옵션 2: 리베이스(Rebase)로 해결
로컬 커밋을 원격 브랜치 위에 재정렬하여 깨끗한 히스토리를 유지합니다.
git pull --rebase
- 충돌이 발생하면 해결 후 다음을 실행:
bash
WrapCopy
git add <수정된 파일> git rebase --continue git push - 리베이스는 히스토리를 선형으로 유지하지만, 이미 원격에 푸시된 커밋이 있다면 주의하세요.
옵션 3: 강제로 덮어쓰기 (주의 필요)
로컬 변경 사항을 무시하고 원격 브랜치로 강제로 맞추고 싶다면:
git fetch origin git reset --hard origin/브랜치명
- 경고: 이 방법은 로컬의 커밋된 변경 사항을 잃을 수 있으니, 중요한 작업이 있다면 먼저 백업하세요.
3. 충돌 예방 팁
- 자주 git pull을 실행하여 로컬 브랜치를 최신 상태로 유지하세요.
- 팀 작업 시 커뮤니케이션을 통해 같은 파일을 동시에 수정하지 않도록 조정하세요.
728x90
반응형
'IT공부' 카테고리의 다른 글
git pull과 git fetch 차이 설명 (0) | 2025.03.02 |
---|---|
git fetch origin 뜻 (0) | 2025.03.02 |
Figma 단축키 (0) | 2025.02.13 |
Open-source AI model DeepSeek-R1 의 보안측면에서의 우려 (4) | 2025.02.13 |
맥북 os 세콰이어 에서 react 프로젝트 생성 실패 시 해결방법 (0) | 2025.02.12 |