3

ローカルの git リポジトリから最後の 5 つのコミットを削除する必要がありreset --hardました。新しい HEAD コミットで削除しました。

git reset --hard abcde1

ここで多くの回答を読んだ後、これらの参照されていないコミットを履歴から削除する必要があります。次を実行してみました。

git gc --prune=now

git prune --expire=now --agressive

私が見つけた答えはどれも私にとってはうまくいかないようです。たとえば、これらのコミットをまだ見ることができgit show <sha>ます。履歴からコミットを完全に削除することは可能ですか?

最後に、新しいオリジン (完全に新しいリポジトリだとしましょう) にプッシュすると、参照されていないコミットもプッシュされますか?

4

3 に答える 3

4

参照されていない、または孤立したコミットは、オリジンにプッシュされません。これらのコミットは、いつか git のガベージ コレクションによって削除されます。ガベージ コレクションを強制する場合は、これを行います。

git config gc.reflogexpireUnreachable = now
git gc --prune=now
git config gc.reflogexpireUnreachable = "2 days"
于 2013-11-11T20:03:37.733 に答える
0

履歴から実際に「削除」しますか? あなたはそれを行うことができますが、誰かがすでにそれらの変更を引っ張ってきた場合、彼らは彼らの歴史で面白い時間を過ごすでしょう.

だから、あなたがやりたいことは

git reset --hard <sha1-commit-id>//the commit you want to get rid of
git push origin HEAD --force

これを行う前に、バックアップを作成してください。繰り返しますが、誰かが既にあなたの変更を引っ張ってきた場合は、恐ろしい話を聞く準備をしてください。

于 2013-11-11T20:07:27.880 に答える