Есть два случая, я знаю, что ваш случай является вторым, но я оставлю оба здесь, чтобы он мог быть полезным для кого-то другого.
Случай 1
Случай 1, когда и B доля того же происхождения (история), поэтому можно вытащить из другого, и наоборот.
На вопрос 1:
Первый тянуть репо B в .
Затем слить B в филиала «s без фиксации:
git checkout A_branch
git merge B_branch --no-commit --no-ff
файлы, которые вы не хотите от В появятся как новые или как новые изменения в . Удалите/отмените их.
Затем просто зафиксируйте. Таким образом, вы получаете только то, что хотите от B.
На вопрос 2:
сделать то же самое.
Случай 2
Случай 2, когда и B совершенно различны, они также различаются в структуре папок, то есть, нет никакого способа, файлы будут сталкиваться, если вы просто скопировать один папка репо на другую (хотя это не то, что мы собираемся делать).
Если это так, вы можете использовать git subtree
. This blog post может дать больше информации, но в основном то, что вы хотите сделать, это, по репо :
git subtree add --prefix ./destination_folder https://your_repo.com/B.git master
Так prefix
указывает папку назначения для репо B, а затем по адресу B «s а затем его ветвь.
Обратитесь к этому сообщению в блоге, если вам необходимо установить git subtree
.
Другим решением этой проблемы является использование , который сочетает в себе две операции РЕПО, создающие третий, но я думаю, что ваш случай подходит лучше с git subtree
, так что я просто оставлю URL here.
Зачем вам нужна история части хранилища? Не лучше просто скопировать все необходимые файлы? – Jepessen