我的情景:
我有两个现有的Git回购:
Project-A
Project-B
我已经通过子树合并将Project-A合并到Project-B中,没有任何问题。主要是在第三个答案之后:
How do you merge two Git repositories?
但是我需要将Project-A合并到我在Project-B中创建的文件夹中。不属于Project-B本身。我一直得到的东西看起来像这样:
Project-B
- Components - self made folder via git add component/README
- Project-A
我需要的结构是:
Project-B
- Components - self made folder via git add component/README
- Project-A
我一直在从Components文件夹中合并Project-A,所以我不确定为什么当我推送时我会继续在Component之外使用Project-A?
此外,当我合并项目A.我想同时合并所有分支,我一直在尝试“git merge Project-A”,但我收到一条消息,说Git不能这样做。所以我必须做一些像“git merge Project-A / master”这样的事情。但是Project-A中有20个不同的分支,我需要将它们推入组件文件夹。可以一次合并所有分支吗?
由于
答案 0 :(得分:1)
您可以使用git subtree add --prefix=Components/Project-A <Project-A’s address> branchname
来实现上面显示的第二个结构。
您可以使用git subtree push --prefix= Components/Project-A <Project-A’s address> branchname
将/ Components/Project-A
目录中的更改推送到远程Project-A
原因是,您无法成功使用git merge Project-A
或git merge Project-A/master
。因为组件/项目中存在的东西-A不是作为分支而是作为项目B中的子项目(您可以使用git branch
来显示存在的分支,您会发现这些分支仅属于项目 - B)。由于Project-A不是分支,因此无法合并有关Project-A的任何内容。