3

私はここでグーグルと検索をしましたが、私の質問に答えるものは何もないようですので、ここに行きます。現在のフォルダー構造のgitリポジトリがあります

   /app/folder/
   /app/folder2/..
   /app/bundles/bundle1
   /app/bundles/bundle2

バンドル内のすべてのバンドルを独自のサブモジュールに変換し、そのバンドル内のコードのすべてのバージョン管理履歴を保持し、ディレクトリレイアウトを完全に同じに保ちたいと思います。この理由は、いくつかのバンドルを使用したい別のアプリがあるためです。

使ってみました

git filter-branch --subdirectory-filter bundles/client -- --all

しかし、これは正しいことではありませんでした。

どんな助けでも大歓迎です。

4

1 に答える 1

0

実際、-subdirectory-filterの使用はまさにやるべきことであり、filter-branchのマンページの例にも示されています。もちろん、現在アクティブなブランチを、操作の結果を含む新しいブランチに置き換えます。元のブランチ(それへのポインタ)は通常、「refs / original /」に保存されます(マンページの--originalオプションを参照)。アクティブなブランチを別の場所にコピーできます。

git branch bundles/client

現在のブランチを復元します

git reset --hard original/refs/heads/oldbranchname

アクティブなブランチをバンドルとしてエクスポートするか、サブモジュールで直接フェッチして、親リポジトリから参照を削除することができます。

filter-branchの--allオプションが使用された場合、すべてのブランチがアクティブなブランチの運命をたどるので、それぞれに対してコピー操作を繰り返す必要があります。

残念ながら、filter-branchコマンドに出力ブランチ名を付けることはできません。Gitメーリングリストで提案する価値があるかもしれません。

于 2012-07-03T14:30:15.883 に答える