次のようにレイアウトされたgitリポジトリがあるとしましょう。
支店長
./.gitignore
./README
./foo/
./foo/magic.py
./foo/document.txt
./bar/
./bar/baxy.c
./herp/
./herp/derp.h
これらのファイルを変更または作成するコミットがたくさんあります。履歴を分割したい場合 (最初の最初のコミットを共有する必要はありませんが、共有しても問題ありません)、2 つのブランチ (ブランチがこれを行うための最良の方法であると仮定します) に分割します。
支店A
./.gitignore
./foo/
./foo/magic.py
./foo/document.txt
ブランチB
./.gitignore
./README
./bar/
./bar/baxy.c
./herp/
./herp/derp.h
たとえば、コミットが両方foo/magic.py
と同じコミットに触れていないという保証はありません。herp/derp.h
ブランチには、それらのファイルに影響を与えるコミットのすべての履歴が含まれている必要があります。複数のファイルに影響を与えたコミット (履歴分割全体) は分割できます。
どうすればいいですか?(肩をすくめてファイルをコピーし、歴史を台無しにすることを検討しましたが、それは警官のようです。)
編集:
それがここで鍵を握っていることは確かですgit filter-branch
が、これまでそれを扱ったことはありませんでした。