Предположим, два репозитория git с некоторыми файлами в них:
ProjectA
+ a
+ b
ProjectB
+ foo/x
+ foo/y
+ bar/z
Теперь я хочу включить каталог foo
из ProjectB в ProjectA .
Насколько я понимаю, когда я делаю git subtree add
, prefix
- это путь, который он должен иметь в принимающем репозитории, поэтому, когда я делаю
git subtree add --prefix=project_b --squash URL_of_ProjectB
Я бы закончил с
ProjectA
+ a
+ b
+ project_b
+ foo/x
+ foo/y
+ bar/z
Могу ли я как-то указать, что я хочу получить только foo
, чтобы получить этот макет?
ProjectA
+ a
+ b
+ project_b
+ x
+ y
1 ответ
Я думаю, что этого нельзя добиться с помощью git subtree
. Может быть, git filter-branch
- это то, что вам нужно:
git remote add b <URL_TO_B>
git fetch b
git checkout -b b_master b/master
Перепишите историю b
, содержащую только foo
:
git filter-branch --prune-empty --subdirectory-filter foo b_master
Или используйте git subtree split
git subtree split -P foo --branch foo
И добавьте его как поддерево
git subtree add --prefix=project_b --squash b_master or foo
Похожие вопросы
Новые вопросы
git
Git — это распределенная система контроля версий с открытым исходным кодом (DVCS). Используйте этот тег для вопросов об использовании Git и рабочих процессах. Не используйте этот тег для общих вопросов по программированию, связанных с репозиторием Git. Не используйте этот тег для вопросов GitHub/GitHub Actions, не связанных с использованием git; вместо этого используйте [github] или [github-actions]. Не используйте тег [github] для проблем, связанных с Git, только потому, что репозиторий размещен на GitHub.
git subtree
, но если это не так, что можно с его помощью? Может быть, я смогу изменить макет файла, чтобы он подходил лучше.git subtree
объясняется командаgit split
, которая похожа на командуfilter-branch
, которую я дал. Но если вы можете изменить свой макет, возможно, лучше извлечь содержимоеfoo
в отдельный репозиторий и добавить его как поддерево в оба проекта. Может, так лучше, раз ужb
какая-то библиотека?git subtree split
в исходном репозитории, нажать новую ветвь, а затем загрузить эту ветвь в принимающую, используяgit subtree add
. Спасибо.