! [거부 됨] 마스터-> 마스터 (먼저 가져 오기) $ git push origin master하면

! [rejected] master -> master (fetch first)'Git에서 ” ” 를 해결하는 방법을 설명하는 좋은 방법이 있습니까?

이 명령을 사용 $ git push origin master하면 오류 메시지가 표시됩니다.

! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:zapnaa/abcappp.git'



답변

대답은 거기에 있습니다. git은 먼저 가져 오라고 말합니다.

아마도 다른 누군가가 이미 마스터하기 위해 밀어 붙였고 당신의 커밋은 뒤쳐져있을 것입니다. 따라서 변경 세트를 가져 와서 병합 한 다음 다시 푸시 할 수 있습니다.

그렇지 않은 경우 (또는 --force옵션 을 사용하여 강제하는 경우 ) 커밋 기록을 엉망으로 만들 수 있습니다.

편집 : 여기 한 사람이 --force옵션 사용에 대한 매우 나쁜 조언을했기 때문에 마지막 요점에 대해 자세히 설명합니다 .

git은 DVCS이므로 이상적으로는 다른 많은 개발자가 동일한 저장소 (또는 포크)를 사용하여 동일한 프로젝트에서 작업하고 있습니다. 변경 세트로 강제로 덮어 쓰면 “내역을 다시 썼기 때문에”저장소가 다른 사람의 저장소와 일치하지 않게됩니다. 당신은 다른 사람들을 불행하게 만들 것이고 저장소는 고통받을 것입니다. 아마도 세상의 새끼 고양이도 울 것입니다.

TL; DR

  1. 해결하려면 먼저 가져 와서 병합하십시오.
  2. 해킹하려면 --force옵션을 사용하십시오 .

하지만 당신은 전자를 요구했습니다. 1) 항상 git을 혼자서 사용하더라도 좋은 습관이기 때문입니다.


답변

시험:

git fetch origin master
git merge origin master

이 코드를 작성한 후 다른 오류가 발생했습니다. (빨리 감기가 아님)

이 코드를 작성합니다.

git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp

그리고 내 문제를 해결했습니다.


답변

을 사용해야 합니다 . 그 git pull명령은 do a를 git fetch하고 다음은 git merge.

git push origin master --force명령 을 사용 하면 향후 문제가 발생할 수 있습니다.


답변

pull은 항상 올바른 접근 방식이지만 Git이 아닌 파일 시스템을 Github 저장소로 변환하려는 경우 한 가지 예외가있을 수 있습니다. 거기에서 첫 번째 커밋을 강제해야합니다.

git init
git add README.md
git add .
git commit -m "first commit"
git remote add origin https://github.com/userName/repoName.git
git push --force origin master


답변

이 git 명령을 시도하십시오.

git push origin master --force

또는 힘 부족 -f

git push origin master -f


답변

오류 메시지에 명시된대로 “먼저 가져와야”합니다. 이것은 나를 위해 일했습니다. 다음 명령을 사용하십시오.

  1. git fetch origin master

그런 다음 병합하려면 다음 단계를 따르세요.

  1. git pull origin master
  2. git add .
  3. git commit -m 'your commit message'
  4. git push origin master


답변

이 명령을 사용하여 해결하십시오-

git push origin master --force

또는

 git push origin master -f