내 GitHub 리포지토리 중 하나에서 마지막 2 개의 커밋을 삭제하려고합니다. 제안 나는 시도했습니다 여기에 : git push -f origin HEAD^^:master
. 마지막 두 커밋이 제거되어 작동하는 것 같습니다.
그런 다음로 로컬 저장소에서 삭제했습니다 git rebase -i HEAD~2
. 해당 커밋과 관련된 줄을 제거하고 git log
올바르게 제거되었는지 확인 합니다.
그런 다음 로컬 리포지토리를 변경하고 새로운 커밋을 한 다음 GitHub로 푸시합니다. 문제는 내 GitHub 계정에서 삭제하려고 시도한 이전 두 커밋이 있다는 것입니다.
문제는 로컬 리포지토리에 있다고 생각합니다 .Github 리포지토리를 로컬에 복제하고 여기에서 약간의 변경을 수행하면 새 커밋을 푸시 할 때 이전 커밋이 GitHub에 푸시되지 않기 때문에.
어떤 생각?
답변
로컬에서 마지막 두 커밋을 제거하려면 다음을 사용하는 것이 좋습니다.
git reset --hard HEAD^^
Rebase는 여기서 전혀 도움이되지 않는 완전히 다른 작업입니다.
답변
마지막 커밋 2 개를 제거하려면 쉬운 명령이 있습니다.
git reset --hard HEAD~2
2
제거하려는 마지막 커밋 수를 변경할 수 있습니다 .
그리고이 변경 사항을 원격으로 푸시 git push
하려면 force ( -f
) 매개 변수 를 사용해야합니다 .
git push -f
그러나 제거하려는 커밋 후에 원격 (Github)에 새로운 커밋 이있는 경우 명령 이나 관련 옵션 을 사용 하지 않는 것이 좋습니다 . 이 경우 항상을 사용하십시오 .git
-f
--hard
git revert
답변
다음은 나를 위해 작동합니다.
git reset HEAD~n
하나만 제거 n
하므로 로컬 저장소에서 마지막 커밋을 HEAD^
제거합니다. 리모컨에서 이러한 변경 사항을 제거해야하는 경우 리모컨 뒤에있을 때 강제로 밀어야 할 수도 있습니다.
git push -f origin <branch>