2

(コミットフックをテストするために)いくつかのテストコミットを行い、常にインデックスを最後の通常のコミットにリセットしました。現在、これらの古いコミットはまだ存在しています。

> git reflog
fcdabf7 HEAD@{0}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29
5c97564 HEAD@{1}: commit: t
fcdabf7 HEAD@{2}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29
ae52246 HEAD@{3}: commit: t
fcdabf7 HEAD@{4}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29
c58aeef HEAD@{5}: commit: t
fcdabf7 HEAD@{6}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29
3a2cc3b HEAD@{7}: commit: test

どうすれば削除できますか?そして技術的な理解のために:私がそれらを放っておくと、私がプッシュした場合、それらは上流のリポジトリにプッシュされますか?

4

2 に答える 2

1

reflogエントリによって参照されるコミット自体は、ぶら下がっていません。reflogをクリアするには、

git reflog expire --expire=0 --all

その後、これgit pruneを使用して--now-dangling--コミットを削除できます。

于 2012-10-14T15:26:06.300 に答える
1

まず第一に、ダングリング コミットがリモート リポジトリに移動することを心配する必要はありません。それらはプッシュされず、通常はやがてクリーンアップされます。

ただし、そのようなぶら下がっているオブジェクトを一掃したい場合は、次を実行してみてください。

git gc --prune=now
于 2012-10-14T15:03:21.280 に答える