git push error - failed to push some refs to '원격 저장소 URL'


저번 포스팅에서는 원격 저장소에 파일을 업로드하는 것까지 해봤다. 하지만 사실 처음부터 저렇게 한 번에 되지 않았다. 몇 가지 오류들이 있었는데, 그 부분을 지금 따로 다루기 위해서 이전 포스팅에서 다루지 않았다. 그 오류들에 대해서 다뤄보려고 한다.

일단 현재 상태는 commit까지 완료한 상태이다. 즉, 이 다음은 원격 저장소를 만들 차례인 것이다. 이전 포스팅과 마찬가지로 똑같이 원격 저장소를 만들어 주는데 이번에는 Initialize this repository with a README에 체크한 후 원격 저장소를 만들어보자(여기까지의 과정은 “git 기본 명령어 사용하기” 편을 참고해주세요!). 이전 포스팅에서도 설명했지만 Initialize this repository with a README에 체크하면 원격 저장소가 만들어짐과 동시에 README 파일이 하나 생성된다.

원격 저장소를 만들 때 단지 파일 하나를 생성하고 안하고의 차이인데 이거에 따라서 결과가 달라지나 싶었다. 하지만 완전히 달라지는 결과가 나왔다. 일단 현재는 README 파일과 함께 원격 저장소가 생성된 상태이다.

그럼 이제 git이 관리할 수 있도록 git에게 원격 저장소가 어디인지 알려줘야 한다. git remote add 명령어를 사용하자.

Initialize this repository with a README에 체크하지 않고 원격 저장소를 만들었을 때와 차이가 없다. 하지만 push하려고 하면

이전 포스팅과는 달리 push가 되지 않고 에러가 발생한다. 위 에러는 원격 저장소와 로컬 저장소의 상태가 달라서 나는 오류이다. 저번 포스팅을 떠올려보면 저번 포스팅에서는 로컬 저장소에도 아무것도 없었고 원격 저장소에도 아무것도 없는 상태였다. 그래서 둘의 상태가 같았기 때문에 push가 잘 됐던 것이다. 하지만, 이번 경우는 로컬 저장소에는 아무것도 없는 상태이지만 원격 저장소에는 README 파일이 있는 상태이다. 즉, 둘의 상태가 다르므로 오류가 발생한 것이다. 따라서, 둘의 상태를 같게 해줘야 한다. git pull 명령어로 로컬 저장소의 상태를 현재 원격 저장소의 상태로 만들어주자.

$ git pull [원격 저장소 닉네임] [브랜치]

로컬 컴퓨터에서 작업할 때, 원격 저장소의 최신 버전을 원하는 경우 이 명령어로 원격 저장소로부터 로컬 저장소로 변경사항을 다운받을 수 있다.

하지만 또 오류가 발생했다. 이 오류가 났을 때는 –allow-unrelated-histories를 뒤에 붙여주면 된다.

$ git pull [원격 저장소 닉네임] [브랜치] –allow-unrelated-histories

이 옵션은 이미 존재하는 두 프로젝트의 기록(history)를 저장하는 상황에 사용되는데, git에서는 서로 관련 기록이 없는 이질적인 두 프로젝트를 병합할 때 기본적으로 이를 거부한다고 한다. 그래서 –allow-unrelated-histories 옵션을 통해 이를 허용해주는 것이다.

이 명령어를 입력해주면 다음과 같은 화면이 나온다.

여기서는 리눅스에서 :wq 입력하는 것처럼 똑같이 :wq를 입력해서 저장하고 빠져나오면 된다.

그러면 README 파일이 로컬 저장소에 만들어졌다고 나온다(정확히는 원격 저장소에서 다운받았다). 직접 로컬 저장소에서 확인해보면

README 파일이 있는 것을 확인할 수 있다. 이제 다시 pooh.txt를 원격 저장소로 push해보자.

$ git push -u [원격 저장소 닉네임] [브랜치]

잘 push 되었다고 나온다. 원격 저장소로 직접 가서 확인해보면

pooh.txt 파일이 원격 저장소로 잘 업로드되었음을 확인할 수 있다.




참고 사이트 :

  • http://dh-dh.tistory.com/47
  • http://gdtbgl93.tistory.com/63
  • https://nolboo.kim/blog/2013/10/06/github-for-beginner/

이전글: git 기본 명령어 사용하기 다음글: ls -al 명령어의 파일 사이즈 쉽게 확인하기