質問
私はプロジェクトで git を使用しており、大量のデータファイル (シミュレーション結果) を生成します。これらすべての結果を同じリポジトリ内でバージョン管理し、追跡することが「強制」されています。(これは厳しい要件であり、変更できません)
しかし、私にはそれらは必要ありません。プロジェクト用に約 50 MB があり、リポジトリには 5 GB の結果があります。
ブランチを作成し、すべての結果を削除し、このブランチをチェックアウトして、そのブランチのみで作業することは可能ですか?
ローカルの変更をファット ブランチに戻すのはどれくらい難しいでしょうか (何をしなければならないでしょうか)?
仕事のためにこれらの 5 GB を削除するためのより良い解決策はありますか?
解決
ブランチを作成し、ブランチから結果ファイルを削除した場合、ブランチを master にマージして戻すと、master から結果も削除しようとします。ファイルの削除は、他のファイルの削除と同様に変更です。
おそらく、git サブモジュール サポートを使用して、コードの変更をファット リポジトリのサブモジュールとして管理できるでしょう。このように、ファット リポジトリにはすべてが含まれているように見えますが、小さなコード ビットだけを独立して作業できます。スムーズに動作させるには多少の調整が必要になる場合があります。
他のヒント
ブランチを作成し、1 つのコミットで不要なファイルを削除すると、データ ファイルを削除するコミットをマージすることなく、後続のコミットをチェリーピックしてメイン ブランチに戻すことができるはずです。
を参照してください。 git チェリーピックのマニュアル.
git Cherry-pick のほかに、マージの直前にファイル削除変更に対して git-revert を実行するという方法もあります。