web-dev-qa-db-ja.com

Githubおよびローカルで最後のnコミットを削除するにはどうすればよいですか?

GitHubリポジトリの1つで最後の2つのコミットを削除しようとしています。 here :git Push -f Origin HEAD ^^:masterのように試しました。動作しているようで、最後の2つのコミットは削除されました。

次に、git rebase -i HEAD〜2を使用して、ローカルリポジトリからそれらを削除しました。それらのコミットに関連する行を削除し、それらが正しく削除されたことをgit logで確認します。

その後、ローカルリポジトリにいくつかの変更を加え、新しいコミットを行い、GitHubにプッシュします。問題は、GitHubアカウントで、削除しようとした前の2つのコミットがあることです。

Githubリポジトリをローカルにクローンし、新しいコミットをプッシュするときにここでいくつかの変更を行うと、古いコミットはGitHubにプッシュされないため、問題はローカルリポジトリにあると思います。

何か案が?

98
Ivan Fernandez

最後の2つのコミットをローカルで削除するには、以下を使用することをお勧めします。

git reset --hard HEAD^^

Rebaseは完全に異なる操作であり、ここでは役に立ちません。

162
KL-7

最後の2つ(2つ)のコミットを削除する場合は、簡単なコマンドを使用します。

git reset --hard HEAD~2

削除する最後のコミットの数に応じて、2を変更できます。

この変更をリモートにプッシュするには、forcegit Push)パラメーターを使用して-fを実行する必要があります。

git Push -f

ただし、推奨しませんがある場合に-fまたは--hardオプションを含むgitコマンドを実行する場合新しいコミット on remote(Github)after削除したいこのコミット。その場合は、常にgit revertを使用してください。

67
Dherik

私のために次の作品

git reset HEAD~n

HEAD^は1つだけを削除するため、ローカルリポジトリから最後のnコミットを削除します。これらの変更をリモートから削除する必要がある場合は、リモートの背後にいるため、プッシュを強制する必要があります。

git Push -f Origin <branch>
16
Sial01