Github 및 로컬에서 마지막 n 커밋을 삭제하는 방법은 무엇입니까? 시도했습니다 여기에 :

내 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--hardgit revert


답변

다음은 나를 위해 작동합니다.

git reset HEAD~n

하나만 제거 n하므로 로컬 저장소에서 마지막 커밋을 HEAD^제거합니다. 리모컨에서 이러한 변경 사항을 제거해야하는 경우 리모컨 뒤에있을 때 강제로 밀어야 할 수도 있습니다.

git push -f origin <branch>


답변