원격 저장소에(github..) push를 하면 다음과 같은 오류가 발생할 때가 있다.
rejected : push가 거부되었다.
master -> master : 로컬 저장소의 master 브랜치의 변경 사항을 원격 저장소의 master 브랜치에 반영하려 했는데
non-fast-forward : 원격 저장소의 master 브랜치가 로컬 저장소의 버전보다 이전 버전이 아니다. 라는 의미이다.
쉽게 말하면 로컬 저장소의 commit 목록과 원격 저장소의 commit 목록이 다르면 둘을 연결할 수 없다.
이 때, git pull 명령어로 원격 저장소의 마지막 commit을 로컬 저장소의 commit 로그에 받아오면 된다.
하지만 pull 명령어를 실행하면 아래와 같은 오류가 발생할 때가 있다.
에러 내용은 commit 히스토리가 서로 관련이 없어 merge(병합)을 할 수 없다는 뜻이다.
pull 명령어는 fetch + merge 작업을 한 번에 처리하는 명령어이다. fetch는 원격 저장소에 있는 내용을 가져오기만 하고 merge가 로컬 저장소와 병합하는 과정이다.
위 에러는 fetch는 되었는데 공통되는 commit 포인트가 없어 merge에 실패했을 때 나오는 메시지이다.
이에 대한 해결방안으로
git pull origin [branchname] --allow-unrelated-histories
명령 옵션을 사용한다.
--allow-unrelated-histories 명령 옵션은 서로 관련 기록이 없는 이질적인 두 프로젝트를 병합할 때 기본적으로 거부하는데, 이것을 허용해 주는 것이다.
pull을 성공적으로 마쳤다면 다시 git push하여 로컬 저장소의 내용을 원격 저장소에 저장하면 된다.
'git' 카테고리의 다른 글
Git 시작하기 (0) | 2021.05.19 |
---|---|
Git이란? (0) | 2021.05.19 |
git bash 사용 시 복사, 붙여넣기 (0) | 2021.01.13 |
git add error (warning: LF will be replaced by CRLF) (0) | 2021.01.06 |
git 명령어 정리 (0) | 2021.01.02 |