7

次のような git commit 履歴があります。

          U
         / 
A---B---C---D---E master

commit を指すものは何もありませんUが、そのハッシュは知っています。このコミットが存在しなかったかのように、リポジトリから完全に削除するにはどうすればよいですか? このリポジトリを使用しているのは私だけです。

を使用してみgit rebaseましたが、ブランチの一部を削除したり、コミットを移動したりできますが、単一のコミットを削除することはできないようです。

git checkout <hash>するとgit reset --hard HEAD~1、コミットが表示されなくなります。それは実際には完全になくなっていますか、それともレポにまだ隠されていますか?

4

2 に答える 2

16

hereで説明されているように、単に使用します

git reflog expire --expire-unreachable=now --all
git gc --prune=now

git reflog expire --expire-unreachable=now --allで到達不能なコミットのすべての参照を削除しますreflog

git gc --prune=nowコミット自体を削除します。

注意:git gc --prune=nowこれらのコミットはまだ reflog で参照されているため、使用のみは機能しません。したがって、reflog のクリアは必須です。

于 2015-03-23T04:51:51.667 に答える
4

最終的には git によってクリーンアップされますが、実際にガベージ コレクションを強制するためにgitgcを調べることができます。

コマンドは異なり、cleanこれを処理しません。

于 2012-12-11T02:12:44.243 に答える