1

私の学校のプロジェクトでは、特定のプロジェクト用にいくつかのサブディレクトリを持つ1つの大きなリポジトリを持っていました。時間がなかったので、私はいつもブランチに何かをコミットしましたmaster

問題は、古いコミットを元に戻したり、メッセージを読んでいないときにどのコミットが何に属しているかを把握することがますます困難になるため、これは実用的ではないことが判明することです。

現在、次のようになっています。

Dir-tree:

projects/
  projectA/
  projectB/
  projectC/
  ...

レポ:

A---B---C---D---E---F---G<master>

ほとんどすべてのコミット(手動で修正できる約5つを除く)は、これらのフォルダーの1つにあるファイルを変更するだけであることがわかりました。

プロジェクトにコミットを自動的に割り当てて別のブランチを作成するという面倒な作業を行う簡単な(自動化された?)方法(スクリプト?)はありますか?私は最後にこのようなものが欲しいです:

レポ:

A---C---G<project A>
|\
| \
|  \
|   B---D<project B>
E---F<project C>
4

1 に答える 1

1

git filter-branchオプションの使用を探してい--subdirectory-filterます。

必要な3つのプロジェクト用に3つのブランチを作成しgit filter-branch --subdirectory-filter projectX、それらのブランチで実行すると、目的の結果が得られます。

プロジェクトごとにリポジトリを使用することを検討することもできます。上記を実行すると、マスターとして以前に作成したブランチの1つを含む新しいリポジトリを作成するのは簡単です。

于 2010-10-06T05:46:07.587 に答える