2016-05-09 7 views
1

は、私はこのようなGitの歴史を持っていると仮定します。gitの履歴から「無意味な」コミットを削除する方法はありますか?

A-B-C-D-E-F-G 

Bが60Kのファイルを追加しました。

Fこれらのファイルは削除されました。

git logのように、gitの履歴をトラバースする操作では、F(またはB)を超えなければならないと、愚かな時間がかかります。

BとFを履歴から効果的に削除する方法はありますか?

その他の点:これを行う簡単な方法はありますか?また、レポを使用している他の開発者も最新のものであることを確認してください。 (私の考えでは、すべてのソリューションが最終的にA-C'-D'-E'-G'の結果になると思われます...

私の勇気は私が得るつもりが作成することですAからのブランチ、CからEへのチェリー・ピック、次にGからの新しいブランチを作成し、それを最初のブランチにマージします。か何か。あなたが言った(または意味)としてgit rebase -i Aを行い、Bのための行を削除し、F.
しかし

答えて

3

だけで、これは公表歴史を書き換えますので、すべてのあなたの仲間の開発者が操作さ枝のようなことをオフに基づいて、すべての枝をリベースする必要がありますgit rebaseのマニュアルページの「上流リベースからのリカバリ方法」に記載されています。

+0

「上流リベースからのリカバリ」を参照してください。問題のブランチは「マスター」です。私が読んでいるところでは、対話的なリベースをして悪意のあるコミットを取り除くと、 'master 'を上書きして、現在持っているトピックブランチをすべて削除するようにGithubに強制しなければならないでしょうか? – henrebotha

+1

正確に。これは、公開された履歴を書き換える "コスト"です。これはまた、通常、ローカルブランチのためにプッシュされた変更とリベースでマージを使用する理由です。 – Vampire

関連する問題