[git] 재설정을 원격 저장소에 강제로 푸시하는 방법은 무엇입니까?
원격 마스터 브랜치가 엉망이되었습니다. 현재 개발 코드는 최신 커밋과 함께 마스터 브랜치에 있습니다. 분명히 개발 코드는 마스터 브랜치에 대해 준비되지 않았습니다.
그래서 내 로컬 저장소에서 최신 태그 인 git reset --hard (Tag)
. 이제 마스터 브랜치가 내 로컬 저장소에서 정확합니다. 이제 변경 사항을 원격 저장소에 푸시하려고 git push origin master
하면 오류가 발생합니다.
To (REMOTE GIT REPOSITORY LOCATION)
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)'
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.
그래서 주변을 둘러 본 후 --force
옵션을 찾았습니다 . 그래서 원격 저장소에 강제 푸시를 git push --force origin master
했지만 여전히 오류가 발생했습니다.
Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To (REMOTE GIT REPOSITORY LOCATION)
! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)'
마스터에있을 수없는 개발 코드가 포함되어 있기 때문에 마스터에 끌어 올 수 없습니다.
답변
이 메시지는 빨리 감기가 아닌 푸시를 할 수 없음을 의미합니다.
원격 저장소는 대부분 denyNonFastforwards = true
구성에 있습니다. 그것을 변경 git push --force
하면 작동합니다.
설정을 변경하려면 원격 저장소가있는 시스템에 액세스해야합니다. 거기에서 git config receive.denynonfastforwards false
.
답변
리모컨은 빨리 감기를 허용하지 않습니다.
최선의 선택은 git revert
거기에 있으면 안되고 앞으로 더 조심해야 할 모든 커밋입니다.
git revert [commit]
무엇을 [commit]
했는지 취소하는 새로운 커밋을 생성합니다 .
답변
다음 스타일에서 강제 푸시를 영구적으로 활성화하는 단계
git push -f myrepo my-branch
원격 저장소에서 “.git”로 끝나는 폴더에서 “config”라는 파일을 편집합니다.
푸시에 실패한 git의 명령 줄 출력에서 다음과 같은 줄을 찾습니다.
error: failed to push some refs to 'ssh://user@some-remote-server.mycompany.com/srv/git/myrepo.git
그때
ssh user@some-remote-server.mycompany.com
cd /srv/git/myrepo.git
vi config
“denyNonFastforwards”를 false로 설정
“config”에서
[receive]
denyNonFastforwards = false
이제 -f를 사용하여 로컬 머신에서 푸시 할 수 있습니다.
git push -f myrepo my-branch
답변
-f
플래그를 사용하고 원격 브랜치 이름 뒤에 두십시오.
git push origin master -f
답변
답변
이 문제를 해결하는 가장 좋은 방법은 원격 분기를 삭제하고 다시 보내는 것입니다.
git push origin master --delete
git push origin master
답변
현재 분기가 PULL에 대해 올바르게 구성되지 않았기 때문에 문제가 발생합니다 . 먼저-를 사용하여 풀에 대해 업스트림 분기가 제대로 구성되었는지 확인합니다 git remote show origin
. 섹션에서 찾을 수 있습니다- ‘git pull’에 대해 구성된 로컬 브랜치 : . 그렇지 않은 경우 다음을 사용하여 구성하십시오.
git config branch.MYBRANCH.merge refs/heads/MYBRANCH
자리 표시 자에 대한 적절한 지점 이름 제공 -MYBRANCH