混乱を避ける最も簡単な方法は、サーバーにより多くのディスクを提供することです。
これは大変なことです。ファイルを削除するには、履歴からも削除する必要があります。これは でのみ実行できますgit filter-branch
。たとえば、次のコマンド<file>
は履歴から削除します。
git filter-branch --index-filter 'git rm --cached --ignore-unmatch <file>' \
--prune-empty --tag-name-filter cat -- --all
問題は、これにより SHA1 ハッシュが書き換えられることです。つまり、チームの全員が新しいブランチ バージョンにリセットする必要があるか、深刻な頭痛のリスクを冒す必要があります。進行中の作業がなく、全員がトピック ブランチを使用している場合は、それで問題ありません。より集中化されている場合、チームが大規模な場合、またはその多くが作業中に汚い作業ディレクトリを保持している場合、少しの混乱と不和がなければこれを行う方法はありません. 全員のローカルを正しく機能させるには、かなりの時間を費やすことができます。書かれてgit filter-branch
いることは、おそらく最良の解決策です。計画を立て、チームがそれを理解していることを確認し、進行中の重要な作業が失われたり変更されたりした場合に備えて、チームがローカルリポジトリをバックアップしていることを確認してください.
1 つの可能な計画は次のとおりです。
- チームに進行中の作業のパッチを生成してもらいます
git diff > ~/my_wip
。
- チームに、コミットされているが共有されていない作業のパッチを生成してもらいます。
git format-patch <branch>
- 実行します
git filter-branch
。これが起こっている間は引っ張ってはいけないことをチームが知っていることを確認してください。
- チームに発行
git fetch && git reset --hard origin/<branch>
してもらうか、リポジトリを新たに複製してもらいます。
- 以前にコミットした作業を に適用し
git am <patch>
ます。
git apply
たとえば、進行中の作業を適用しgit apply ~/my_wip
ます。