9

git リポジトリにリモートを設定するのを間違えて、まったく別のプロジェクトから取得しました。

幸いなことに、マージはありませんでしたが、現在、レポに 2 つのプロジェクトの履歴が浮かんでおり、レポを誤って取得する前の状態に戻す方法を見つけようとしています。

reflogrebasegcおよび誤ってフェッチしたものを取り除くのに役立つその他のコマンドについて読んでいますが、これまでのところどこにもありません。

私のレポには両方のプロジェクトの履歴があるようですが、完全に独立しています。基本的に、互いに並行して実行されているコミットの 2 つの別個のツリーがあります。実際、これはgitkすべてのブランチを見ると次のようになります。

ここに画像の説明を入力

途中のコミットが履歴の最初と最後にあるコミットにつながっていないことがわかります。日付的にはインターリーブされていますがgitk、何らかの理由でインターリーブされていません。

孤立したコミット (写真の中央) は、私が取り除こうとしているものであり、どのブランチにも関連付けられていないようです。私のレポの HEAD からこの一連のコミットに戻るルートはありません。

これまでのところ、私は試しました(違いが生じる場合に備えて):

git remote prune
git prune
git gc
git gc --aggressive --prune=tomorrow
git remote update --prune
git fetch --all

しかし、まだ何も役に立っていません。これらのコミットをリポジトリから削除する方法を誰か提案できますか?

4

1 に答える 1

12

. _ 0.1.something_ something_ git tag -d 0.1.somethingこれが完了すると、コミットは gc 対応になります。

コミットに到達するタグがある限り、このコミットは到達可能と見なされ、したがって「永久に」存続します。それを指す参照 (ブランチ、タグ、その他の参照、. ..)

于 2012-08-23T14:32:52.730 に答える