4

git-subtree を使用して git リポジトリを追加しました。問題は、リポジトリが git-subtree で追加される前にハード リセットを行ったことです。現在、コミット履歴はまだリポジトリにありますが、マスターから切断されています。

それを削除する方法はありますか?git rm --cached を試してみましたが、うまくいきませんでした。

4

1 に答える 1

5

サブツリー コミットの場合のように、既に到達できないコミットをすぐに削除するには、次のコマンドを使用できます。

git reflog expire --all --expire-unreachable=0
git repack -A -d
git prune

git gc到達不能なコミットをすぐに収集することはありません。これは、(デフォルト構成では) これらは最初に期限切れになる必要があり、次に他の到達可能なコミットと一緒にパックされないようにする必要があるためです。これはしばらくすると自然に発生するか、上記のコマンドで強制的に実行できます。

また、サブツリー コミットへの参照があると、それらが収集されなくなることも考慮してください。これには、ブランチ、タグ、および reflog 参照​​が含まれます。これらのコミットへのダングリング参照がないことを確認してください。

到達不能なコミットを破棄する方法に関するより詳細な質問もここにあります。

git でのガベージ コレクション コミット

于 2013-04-09T09:05:48.557 に答える