187

GitHubリポジトリの1つから最後の2つのコミットを削除しようとしています。私はここで提案されているように試しました:git push -f origin HEAD^^:master。最後の2つのコミットが削除されているため、機能しているようです。

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

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

問題はローカルリポジトリにあると思います。Githubリポジトリをローカルに複製してここで変更を加えた場合、新しいコミットをプッシュしても、それらの古いコミットはGitHubにプッシュされないためです。

4

4 に答える 4

267

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

git reset --hard HEAD^^

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

于 2012-04-14T12:14:51.967 に答える
175

最後の2つのコミットを削除したい場合は、それを行う簡単なコマンドがあります。

git reset --hard HEAD~2

2削除する最後のコミットの数は変更できます。

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

git push -f

ただし、削除したいこのコミットのにリモート(Github)に新しいコミットがある場合は、コマンドまたはオプションを使用して実行することはお勧めしません。その場合は、必ず。を使用してください。git-f--hardgit revert

于 2016-08-03T13:13:20.500 に答える
49

以下は私のために働きます

git reset HEAD~n

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

git push -f origin <branch>
于 2016-08-02T14:53:33.600 に答える
5

最後のn個のコミットを削除するには:

git reset HEAD~n

これらの変更をリモートから削除する必要がある場合は、リモートの背後にいるため、強制的にプッシュする必要があります。

git push -f origin <Branch Name>
于 2021-07-02T10:32:15.107 に答える