본문 바로가기
개발 관련 지식/git

git push, pull 에러

by 권태일1147 2020. 3. 19.

remote repository를 설정하고 바로 push, pull을 하면 에러가 발생 할 수도 있다.

예를 들면 push 할 경우.

non-fast-forward : remote repository의 master branch가 local repository의 이전 버전이 아니라는 의미이다.

 

보통은 remote에서 readme.md를 만드는데 local에는 readme.md를 추가하는 commit이 없기 때문에, 혹은 이와 비슷한 상황 때문에 저런 에러가 발생한다.

 

push 명령은 local의 commit과 remote의 commit을 비교하고

remote의 마지막 commit ID와 동일한 local의 commit ID를 찾아서 연결한다.

remote의 readme.md를 추가하는 commit ID가 local에는 없어서 연결이 되지 않아 push가 안된다.

 

해결 방법으로는

1. readme.md를 넣지 않는 remote repository를 다시 만든다.

2.fetch 또는 pull 명령으로 remote의 commit을 local로 가져온다.

 

 

근데 pull을 해도 error가 발생할 것이다.

commit history가 remote branch와 local FETCH_HEAD가 연관이 없어서 merge가 안되는 것이다.

pull 명령어는 fetch + merge 인데, 지금은 fetch만 되고 merge가 안된것이다.

 

merge가 되려면 remote repository와 local repository 모두가 가지고 있는 commit 지점이 존재해야 한다. 그 공통 지점에서 부터 merge를 하기 때문이다.

merge에 필요한 공통 commit이 없기 때문에 merge가 거부된것이다.

 

해결 방법으로는

1. git clone 명령어로 remote repository를 복제해온다 ( 이렇게 하면 local에 remote의 commit 이 복제되어 온다. )

2. git pull origin master --allow-unrelated-histories 명령어를 이용해 강제로 pull을 해온다. ( 강제로 merge가 이루어진다. )

'개발 관련 지식 > git' 카테고리의 다른 글

프로젝트에 처음 git 적용할 때  (0) 2020.03.14
git clone  (0) 2020.02.28