Git поддерево. Одна общая папка в двух репозиториях

У меня есть два проекта, ProjectA и ProjectB. У каждого из них есть свой git-репо. Эти проекты имеют много одинаковых файлов. Эти файлы находятся в папках с именем " common " как в ProjectA, так и в ProjectB. Вот пример файлов:

ProjectA:

...
cat-folder
dog-folder

common
    commonFile1
    commonFile2

fish-file.php
squirrel-file.txt
...

ProjectB:

...
potato-folder
apple-folder

common
    commonFile1
    commonFile2

tomato-file.xml
pineapple-file.csv
...

Я работаю над обоими проектами. Я могу внести изменения в общие файлы, работающие над ProjectA или ProjectB. Я хотел бы, чтобы изменения общих файлов, сделанные в ProjectA, также появлялись в общих файлах в ProjectB (и наоборот). Итак, я бы хотел, чтобы " общая " папка в обоих проектах всегда была актуальной и содержала одни и те же файлы.

Для этого я использую git поддерево. Я создал третий репо " common-repo ", поместил туда все файлы " общей " папки, затем удалил " общие " папки из обоих проектов. Затем в каждом проекте я делаю это:

$ 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

Затем, если я внесу изменения в общий репо и протолкну их, я смогу легко перенести их в ProjectA или ProjectB:

$ cd /path/to/ProjectA      # or ProjectB
$ git pull -X subtree=common common-repo master      # this pulls changes from common-repo

Но проблема возникает, когда я меняю файлы в " общей " папке, работающей в ProjectA (или ProjectB), и пытаюсь перенести ее в общий репо.

$ cd /path/to/ProjectA      # or ProjectB
$ git subtree push --prefix=common common-repo master     # !!!! 

Последняя команда помещает все файлы ProjectA в общее хранилище, в том числе его не общие файлы!

Как я могу подтолкнуть к общему репо только файлы из " общей " папки? А может я что-то делаю абсолютно неправильно?

1 ответ

Вместо того, чтобы использовать:

git pull -X subtree

Попробуйте использовать subtree pull команда. Предположительно это сделано для работы по subtree push и другие subtree подкоманды:

git subtree pull --prefix=common common-repo master
Другие вопросы по тегам