2012-08-23 2 views
5

私のgit repoでリモートをセットアップして、まったく別のプロジェクトからフェッチしました。間違ったリポジトリを取得した後にGitの履歴を修正しました

幸いにも、マージはありませんでしたが、私は今、2つのプロジェクトの履歴が私のレポに浮かんでいます。私は間違いを起こす前の状態に自分のレポを戻す方法を見つけようとしていますフェッチ。

私は約reflogrebasegcを読んでいると、他のコマンドは、私が誤って取り込んだものを取り除く、これまでのところ任意の場所を持っていないのに役立ちますどのうまくしようとしています。

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

enter image description here

あなたは途中でコミットがあることがわかります歴史の始めと終わりにコミットに接続されていません。日付的には、インターリーブされていますが、何らかの理由でgitkにインターリーブされていません。

(写真の真ん中にある)隔離されたコミットは、自分自身を取り除こうとしているものであり、どのブランチにも添付されていないようです。私のレポのHEADのいずれからもこの一連のコミットに戻るルートはありません。これまでのところ、私は(それが違いを作る場合のために)しようとした

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

は何もまだ支援してきました。誰も私のレポからこれらのコミットを取り除く方法を提案できますか?

答えて

8

git tag -d 0.1.somethingを使用して、ダグリングタグ(0.1.something、ここでsomethingがスクリーンショットに表示されない)を削除するだけで済みます。これが完了すると、コミットが可能になります。

コミットに到達したタグがある限り、このコミットは到達可能とみなされ、したがって「永遠」に保持されます。ガベージコレクションは、ブランチ、タグ、他の参考文献、...)

+1

ありがとう、それは私が必要としていたものでした。タグがコミットを取り除くのを止めているかもしれないということは私には起こりませんでした+1 – chrisbunney

関連する問題