私たちは、約7 GBのディスク容量を占める4000以上のコミットを持つ、2014年8月13日からgitリポジトリを持っています。 (GITバージョン:2.9.0.windows.1)GITヒストリを切り捨てる(2つの永続的なブランチを持つ)
これらの年の間、プロジェクトはかなり進化しました。したがって、最も古いコミットはもう役に立たなくなりました。
ほかにも、特定の日付の履歴を「統合」したいと考えています。 6カ月以上経過したものを「スカッシュ」して1つの大きなコミットにしたいとしましょう。
メインのハンディキャップは、我々は多枝構造を得たことで、明らかに我々はそれを維持したい:
- マスターブランチ(永久)
- (永久)
- 機能ブランチ(支店を開発:各タスクの一つは、これは歴史が今どのように見えるかです 、例で
)マージ後に削除しました
これは、我々が必要とするものである:
私たちは、 "深さ" を持ついくつかのアプローチなど "リベース"、 "チェリーピック"、 "クローン" を試してみました...しかし、何も思いません私たちが必要とすることをすることができます。 これらは私が試した最も有意義なものです:「私は「スカッシュ」の最も古いコミットしようとしたが、それぞれが対話の中で結果をマージ両方のコマンドで (tortoiseGit 2.1.0.0を使用して)
リベースとチェリーピックどちらの親を選びたいのですか?parent1/parent2 "、どのファイルを選んでも問題ありません。すべてのファイルが"競合 "としてマークされ、"手動で "解決する必要があります。 私は、このすべての競合を手動で処理することはできません(マスターブランチと開発ブランチで同じシーケンスを再現することはできません)。すべての古いコミットが、結果のレポは単一の枝を持って正しく「スカッシュ」 「gitのクローンlimitedRepo --depth = 1000」:(Gitの-バッシュ経由)の深さの
クローン 私は、このコマンドを実行します。
「gitのリモート設定ブランチの起源 『*』」
が、フェッチされたブランチを「gitの-vvvフェッチ」:
は、だから私は戻って取得原点から枝を開発するには、このコマンドを試してみました私たちが必要とする「押しつぶされた」ものではなく、歴史全体を含んでいます。
同じコマンドを別々のパラメータで使用しようとしましたが、私はちょうど手をつけています。
私はrebaseを使って別のテストを行いましたが、まだ矛盾の問題があります。これは私が試したものです:( CONFLICT: 1. gitのチェックアウト--orphan一時SHA1 2. Gitはこれが私が得たメッセージである--onto一時SHA1マスター をリベース "切り捨てられた歴史" 3. gitのを-mコミットコンテンツ):aFile.txtでのコンフリクトのマージ エラー:変更をマージできませんでした。 0001で作成したパッチが、リリース用にビルドされました。 失敗したパッチのコピーは、.git/rebase-apply/patchにあります。 この問題を解決したら、 "git rebase --continue"を実行してください。 –