2016-05-25 5 views
0

git repoが表示されました。より一般的なリポジトリのサブディレクトリ、たとえばmodule xとしてBetters Suitを作成しました。すべてのパスにプレフィックスmodule x\があるように、元の履歴(署名されたコミットなし)をコピーするにはどうすればよいですか?gitリポジトリを新しいリポジトリのサブディレクトリにするには?

私はもちろん、そのサブディレクトリに新しいコミットをすべて移動することもできますが、以前のリポジトリが常にサブディレクトリにあるかのように履歴を見せるソリューションを好むでしょう。


私はこれが不足しているためであると思われる(そうでない場合git subtreeは既存の接頭辞文句を言うので)、新鮮なリポジトリと、一時的な並列フォルダからgit subtree add --prefix="module x" ../module_x masterを試してみましたが、

fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree. 
Use '--' to separate paths from revisions, like this: 
'git <command> [<revision>...] -- [<file>...]' 
Working tree has modifications. Cannot add. 

で終わります

それは動作しますが、私は別のブランチ+ acの元の履歴で終わります私は前に述べた手作業のソリューションだけです。

答えて

0
git filter-branch --tree-filter 'mkdir -p module_x; mv all the files and* module_x/' HEAD 

トリックはやりましたか?明示的に言及したファイルは、歴史全体を通じて存在していない場合、あなたは少しトリックや、--tree-filter; trueを追加する必要があります...

を私はmsysgitを使用していますが、私は、Linux shopt -s extglob; mv !(module_x) module_x/でより良い動作するはずと思いますmvの0以外の終了コードは無視されます。

関連する問題