ProjectAとProjectBの 2 つのプロジェクトがあります。それぞれに git リポジトリがあります。これらのプロジェクトには、同じファイルが多数あります。これらのファイルは、ProjectAとProjectBの両方で「 common 」という名前のフォルダーにあります。ファイルの例は次のとおりです。
プロジェクトA :
...
cat-folder
dog-folder
common
commonFile1
commonFile2
fish-file.php
squirrel-file.txt
...
プロジェクト B :
...
potato-folder
apple-folder
common
commonFile1
commonFile2
tomato-file.xml
pineapple-file.csv
...
私は両方のプロジェクトに取り組んでいます。ProjectAまたはProjectBで作業している共通ファイルを変更する場合があります。ProjectAで行われた共通ファイルの変更が、 ProjectBの共通ファイルにも表示されるようにしたいと考えています(逆も同様です)。したがって、両方のプロジェクトの " common " フォルダーを常に最新の状態にし、同じファイルを含めるようにしたいと考えています。
これにはgit subtreeを使用します。3 番目のレポ「common-repo 」を作成し、そこに「 common 」フォルダーのすべてのファイルを配置してから、両方のプロジェクトから「 common 」フォルダーを削除しました。次に、各プロジェクトでこれを作成します。
$ cd /path/to/ProjectA # or ProjectB
$ git remote add common-repo https://my_user@bitbucket.org/url/of/common-repo
$ git fetch common-repo
$ git subtree add --prefix=common/ common-repo master --squash # this command adds the "common" folder with my common files to the current project
次に、common-repoに変更を加えてプッシュすると、簡単にProjectAまたはProjectBにプルできます。
$ cd /path/to/ProjectA # or ProjectB
$ git pull -X subtree=common common-repo master # this pulls changes from common-repo
しかし、ProjectA (またはProjectB ) で作業している " common " フォルダー内のファイルを変更し、それをcommon-repoにプッシュしようとすると、問題が発生します。
$ cd /path/to/ProjectA # or ProjectB
$ git subtree push --prefix=common common-repo master # !!!!
最後のコマンドは、非共通ファイルを含むProjectAのすべてのファイルをcommon-repoにプッシュします!
「 common」フォルダーのcommon-repoのみのファイルにプッシュするにはどうすればよいですか? それとも、私は何か絶対に間違ったことをしていますか?