git-subtree を使用して git リポジトリを追加しました。問題は、リポジトリが git-subtree で追加される前にハード リセットを行ったことです。現在、コミット履歴はまだリポジトリにありますが、マスターから切断されています。
それを削除する方法はありますか?git rm --cached を試してみましたが、うまくいきませんでした。
git-subtree を使用して git リポジトリを追加しました。問題は、リポジトリが git-subtree で追加される前にハード リセットを行ったことです。現在、コミット履歴はまだリポジトリにありますが、マスターから切断されています。
それを削除する方法はありますか?git rm --cached を試してみましたが、うまくいきませんでした。
サブツリー コミットの場合のように、既に到達できないコミットをすぐに削除するには、次のコマンドを使用できます。
git reflog expire --all --expire-unreachable=0
git repack -A -d
git prune
git gc
到達不能なコミットをすぐに収集することはありません。これは、(デフォルト構成では) これらは最初に期限切れになる必要があり、次に他の到達可能なコミットと一緒にパックされないようにする必要があるためです。これはしばらくすると自然に発生するか、上記のコマンドで強制的に実行できます。
また、サブツリー コミットへの参照があると、それらが収集されなくなることも考慮してください。これには、ブランチ、タグ、および reflog 参照が含まれます。これらのコミットへのダングリング参照がないことを確認してください。
到達不能なコミットを破棄する方法に関するより詳細な質問もここにあります。