브랜치를 master
여기와 원격으로 모두 호출 하고 리모트를 호출한다고 가정하면 origin
다음을 수행 할 수 있습니다.
git reset --hard <commit-hash>
git push -f origin master
그러나 다른 사람이 원격 저장소를 작업 중이고 변경 사항을 가져온 경우이 작업을 수행하지 마십시오. 이 경우 원하지 않는 커밋 을 되 돌린 다음 평소대로 푸시하는 것이 좋습니다 .
업데이트 : 당신은 다른 사람들이 당신이 푸시 한 변경 사항을 가져 왔음을 아래에서 설명 했으므로 모든 변경 사항을 되 돌리는 새로운 커밋을 만드는 것이 좋습니다 . Jakub Narębski 의이 답변 에서이 작업을 수행하는 옵션에 대한 좋은 설명이 있습니다 . 가장 편리한 방법은 되돌릴 커밋 수와 가장 적합한 방법에 따라 다릅니다.
귀하의 질문에서 이미 지점 git reset --hard
을 재설정 하는 데 사용 했음이 분명하기 때문에 master
지점 git reset --hard ORIG_HEAD
을 이전 위치로 다시 이동 하는 데 사용해야 할 수도 있습니다 . (와 항상 똑같이, 깨끗하고, 올바른 지점에 git reset --hard
있는지 git status
, git reflog
명백하게 손실 된 커밋을 복구하는 도구로 알고 있는지 확인하십시오.) 또한 ORIG_HEAD
을 사용하여 올바른 커밋 을 가리키는 지 확인해야합니다 git show ORIG_HEAD
.
문제 해결:
" ! [원격 거부 됨] a60f7d85-> 마스터 (수신 수신 거부) " 와 같은 메시지가 표시되는 경우
그런 다음 특정 지점에 대한 지점 기록 다시 작성을 허용해야합니다. 예를 들어 BitBucket에서는 "분기 기록 다시 쓰기가 허용되지 않습니다"라고 말했습니다. 체크 Allow rewriting branch history
해야하는 체크 박스 가 있습니다.
origin/master
다른 사용자가 귀하 를 끌어 당기지 않았습니까? 공용 (즉, 로컬이 아닌) 리포지토리의 기록 변경은 항상 피해야합니다.