2016-06-28 12 views
1

私はgitリポジトリがあります。二つのリモートリポジトリ、異なるforldersは

リポジトリをA:

config 
    view1.yml 
    view2.yml 
public 
    css/ 
    styles.css 
    js/ 
    scripts.js 
    index.html 

私は別のリモートリポジトリを追加したいが、ただ、パブリックフォルダの内容を追跡する、例:

リポジトリB:私はローカルでそれを行うことができますどのように

css/ 
    styles.css 
js/ 
    scripts.js 
index.html 

git remote add

+0

[関連する回答](http://stackoverflow.com/a/38099643/4233593)をご覧ください。 –

答えて

1

すべてがエクスポートしたい一つのディレクトリ下にあり、あなたが本当に他のすべてを省略したい、あなたはgitのフィルタ分岐でダウン枝をフィルタリングして、レポB.

に出ちょうどその結果枝をプッシュする可能性がある場合興味のある枝の先端から

、あなただけの「公共」ディレクトリに変更し、下記維持したいと仮定すると:そして、あなたが分岐nameOfPublicBranch上のいずれかにコミットをダウンスカッシュしたい場合は

git checkout -b nameOfPublicBranch 
// Create a new branch where you want to start to filter 

git filter-branch -f --subdirectory-filter public 
// This filters your branch down to commits that modified public (and below) 

git push repoB nameOfPublicBranch 
// now export to repoB just this stuff that you wanted on your branch nameOfPublicBranch 

git checkout <yourOldBranchName> 
// get back to your old branch 

をくださいあなたがそれを押す前にそれにrebaseのスカッシュ。

これには他にも多くの方法があります.1つはサブモジュールの使用であり、このアプローチ(履歴の書き換え)には意図しない問題がある可能性があります。

0

たぶん、あなたは、次の内容(をテストしていません)と(ファイルを無視し、それらを追跡しないのgitに伝えます)gitignoreを使用する必要があります:あなたはすでに追跡ファイルがある場合は、その後、

* 
!/css 
!/js 

gitignoreを設定する前にgit rm --cached <file>を実行する必要があります。

gitignoreについてもっと知りたい場合は、おそらくthis partのgitチュートリアルを読んでみたいです。

1

git subtreeをご覧ください。そのドキュメントから、それは次のように説明します

...サブツリーは、サブプロジェクトは、必要に応じてサブプロジェクトの全体 履歴を含む メインプロジェクトのサブディレクトリ内に含まれることを可能にします。

たとえば、あなたがあなたのアプリケーションの サブディレクトリとしてライブラリのソースコードを含めることができます...

私はどこか(git init --bare)新しい裸のリポジトリを作成してにサブツリーsplitコマンドを行うだろうパブリックフォルダの履歴を「分岐」します。そして、私はあなたの他のリポジトリにこの情報をプッシュします。この例は、上記のドキュメントでExample 3とリンクされています。

<go to the new location> 
git init --bare 
git subtree split --prefix=lib --annotate="(split)" -b split 
git push <new-repo> split:master 
関連する問題