거부 된 마스터-> 마스터 (빨리 감기) to push some refs to

프로젝트 (새 저장소의 모든 파일)를 푸시하려고합니다. 나는 단계를 따르지 만 푸시 git push -u origin master하면이 오류가 발생합니다.

! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:asantoya/projectnewbies.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

이 오류가 여러 번 발생하여 어떻게해야할지 알 수 없습니다.



답변

오류 메시지에 표시된 것처럼 : git pull시도하기 전에 git push. 현지 지점이 추적 지점과 동기화되지 않은 것 같습니다.

프로젝트 규칙 및 워크 플로에 따라 사용할 수도 있습니다 git pull --rebase.


답변

주의 사항 : 이것은 git을 권장하지 않습니다. 리모컨의 변경 사항을 덮어 씁니다. 로컬 변경 사항을 원격 마스터로 푸시해야한다는 것을 100 % 알고있는 경우에만이를 수행하십시오.

이 시도: git push -f origin master


답변

이 명령은 나를 위해 잘 작동했습니다

git push -f origin master

답변

방금이 오류가 발생했습니다.

로컬 git 리포지토리를 만든 후 github 리포지토리를 만들었으므로 github으로 푸시하기 전에 로컬 변경 사항을 수락해야했습니다. 이 경우 github 리포지토리를 생성 할 때 선택적 단계로 생성 된 readme 파일 만 변경되었습니다.

git pull https://github.com/*username*/*repository*.git master

저장소 URL은 프로젝트 github 페이지의 여기에서 가져옵니다.

그런 다음 다시 초기화되었습니다 (필요하지 않을 수도 있음)

git init
git add .
git commit -m "update"

그런 다음 :

git push

답변

나는 github에서 새로운 저장소를 만들었고 같은 문제가 있었지만 당기는 동안 문제가 있었기 때문에 이것이 나를 위해 일했다.

그러나 이것은 모든 코드를 망칠 수 있으므로 이미 많은 코드가있는 repos에서는 권장되지 않습니다.

git push origin master --force

답변

경고:

git pull‘로 가는 것은 항상 해결책이 아니므로 조심하십시오. 저장소 히스토리를 의도적으로 변경 한 경우이 문제점 (Q에서 언급 된 문제)에 직면 할 수 있습니다. 이 경우 git은 기록 변경 사항을 원격 저장소의 새로운 변경 내용과 혼동합니다. 따라서 git push --force호출 git pull하면 의도적으로 기록에 대한 모든 변경 사항이 실행 취소되므로을 방문해야합니다 .


답변

git pull도움 이 되지 않으면 변경 사항을 푸시 한 후 (A) 변경 사항 git commit --amend을 추가하는 데 사용한 것입니다 (B). 따라서 git은 히스토리를 잃을 수 있다고 생각합니다-A의 모든 변경 사항이 포함되어 있지만 B는 다른 커밋으로 해석됩니다.

             B
            /
        ---X---A

아무도 이후 A에 repo를 변경 하지 않으면 그렇게 할 수 있습니다 git push --force.

그러나 A다른 사람으로부터 변경이 발생한 경우 :

             B
            /
        ---X---A---C

그런 다음 개인 AB( C-> D)로 변경 한 것을 리베이스해야합니다 .

             B---D
            /
        ---X---A---C

또는 수동으로 문제를 해결하십시오. 아직 그렇게하는 방법을 생각하지 못했습니다.