2012-01-12 26 views
1

私のコミット履歴に問題があります。それは実際問題ではありません。問題に影響しないので、視覚的な問題です。基本的に私はCakePHPプロジェクトに取り組んでおり、CakePHPをサブモジュールとして追加しようとするとかなり混乱しましたが、私はあきらめました。問題は、私の歴史は今(タワーに)このようになっていることである:あなたが見ることができるようにgitコミット履歴を消去する

Screenshot from Tower

は、ラインが停止し、再び起動し、すべてのCakePHPの歴史があります前に、そのgitリポジトリの1 。すべてを取り除くために何をすべきですか?ありがとう。

答えて

1

あなたが間違ってCakePHPをサブモジュールとして追加するのではなく、あなたのプロジェクトに直接引っ張ったようです。最も簡単なことは、リポジトリ全体を削除してからやり直すことです(または新しいリポジトリを作成し、既存のリポジトリからmasterブランチを引き出すだけです)。また、CakePHPのフェッチによって残されたすべてのリファレンスを削除することもできますが、それはいくつかの作業になるでしょう。そして、数ヶ月間リポジトリにオブジェクトを残してしまいます。あなたが気にしているコミットを新鮮なレポに引き込むことは、より簡単になるでしょう。ただ、次のようなものが動作するはず既存の1、のmasterブランチを含む新しいレポを作成するには

mkdir newRepo 
cd newRepo 
git init 
git fetch ../oldRepo/.git master:temp 
git reset --hard temp 
git branch -d temp 

これだけmasterブランチと他には何を取得します。 tempのビットは、そうでなければgitが非ベアレポのHEADにフェッチすることを拒否するためです。いずれの場合においても

あなたは、新鮮なレポを持っていたら、あなただけのサブモジュールを追加すること

git submodule add git://url/for/CakePHP.git path/to/submodule 

を使用することができるはずです。

+0

ええ、私はコミットがオンラインのレポに表示されないので、これを行うか、ちょうどチェックアウトしますので、私はそれらのコミットなしで現在のコミットを保存します! – entropid

1

よくお聞きしたいのは、対話型のリベースモードを入力して、保持したいコミットを選択し、マージする(squash)と完全に削除する(コミットによって適用された変更が削除される)レポ)。ただし、あなたの履歴を共有していない場合にのみ、これを実行してください。履歴が変更され、古い履歴を持つ人が新しい履歴を取得/マージしようとすると、gitは履歴間の接続を検出しないため、非常に重大なマージ競合が発生します。

+0

これらのコミットは 'git rebase -i'には現れません!私はすでに試しました。 :( – entropid

+2

@Entropy:その場合は、どのコミットを削除したいのか、すでに試したことを少し伝えたいかもしれません(例えば、 'git rebase -i'とはどのようにして正確にコールしましたか)。 – Grizzly

関連する問題