Github“원격에없는 작업이 포함되어 있기 때문에 업데이트가 거부되었습니다”


176

새 저장소를 만들고 복제하고 디렉토리에 파일을 추가하고 파일을 추가하고 add -A변경 사항을 커밋했으며 푸시를 사용하려고 git push <repo name> master하면 "원격에없는 작업이 포함되어 있기 때문에 업데이트가 거부되었습니다"라는 메시지가 나타납니다.

이것은 새로운 저장소이며 readme 파일 만 포함하기 때문에 의미가 없습니다.

답변:


308

README및 / 또는 LICENSE파일을 사용하여 새 github 저장소를 초기화 한 경우에 발생 합니다

git remote add origin [//your github url]

//pull those changes

git pull origin master 

// or optionally, 'git pull origin master --allow-unrelated-histories' if you have initialized repo in github and also committed locally

//now, push your work to your new repo

git push origin master

이제 저장소를 github에 푸시 할 수 있습니다. 기본적으로, 새로 초기화 된 파일을 작업과 병합해야합니다. git pull가져오고 병합합니다. 자신에게 적합한 경우 가져 와서 병합 할 수도 있습니다.


7
더 자세한 설명과 함께이 문제를 피할 수있는 두 가지 제안 된 방법으로 YouTube 비디오 를 만들었 습니다.
Kevin Markham

16
병합 명령을 위해 사용git pull origin master --allow-unrelated-histories
Luciano Marqueto

"치명적인 : 관련이없는 기록을 병합하는 것을 거부합니다"
Sergi

4
@Sergi trygit pull origin master --allow-unrelated-histories
palerdot

101

커밋하고 GitHub에 존재하는 코드의 다른 구조로 인해 오류가 발생할 수 있습니다. 그것은 해결할 수있는 갈등을 만듭니다

git pull

병합 충돌 해결 :

git push

새 코드가 모두 정상임을 확인하면 다음을 사용할 수 있습니다.

git push -f origin master

어디 -f를위한 스탠드 "힘은 커밋".


13
'git push -f origin master'-도움이 됨
Saurabh

4
git push -f는 원격 히스토리를 로컬 히스토리로 겹쳐 쓰므로 사용시주의하십시오. 특히 공공 저장소에서.
Andre

updates-were-rejected원격에서 github repo를 변경 한 경우에도 발생합니다 (예 : github gui를 사용하여 readme 파일에서 일부 변경). 그런 다음 새 작업을 github에 푸시하려고하면 원격에서 변경했지만 로컬에 존재하지 않는다는 내용의 메시지가 표시됩니다.
Deke

13

이것이 첫 번째 푸시 인 경우

그냥 변경

git push <repo name> master

이렇게 바꾸세요!

git push -f <repo name> master

1
이렇게하면 처음에 원래에서 만든 것처럼 파일이 삭제됩니다. 대신 git pullbefore를 사용하여 원격 파일을 가져 와서 커밋을 병합하십시오. 허용 된 답변 상태와 마찬가지로
JayJay

@jayjaybricksoft 의견을 보내 주셔서 감사합니다. 첫 번째 푸시이므로 원본 파일을 바꾸는 것이 좋습니다.
Mahyar


2

제공된 답변이 효과가 없었습니다.

LICENSE 파일과 로컬로 단일 커밋이있는 GitHub에 빈 저장소가 있습니다. 효과가 있었던 것은 :

$ git fetch
$ git merge --allow-unrelated-histories
Merge made by the 'recursive' strategy.
 LICENSE | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 LICENSE

또한 merge다음을 원할 수도 있습니다.

$ git branch --set-upstream-to origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.

0

나는 다음 단계를 따랐다.

마스터를 당깁니다 :

git pull origin master

로컬 리포지토리와 Github 리포지토리가 동기화됩니다. 새 파일을 추가 한 후 다음을 수행하십시오.

git add .

변경 사항을 커밋하십시오.

git commit -m "adding new file  Xyz"

마지막으로 원점 마스터를 푸시하십시오.

git push origin master

Github 저장소를 새로 고치면 새로 추가 된 파일이 표시됩니다.


0

Visual S2019를 사용하는 경우 다음과 같이 새 로컬 분기를 만든 다음 변경 내용을 리포지토리로 푸시하십시오. VS2019 현지 지점

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.