使用孤立分支将现有git存储库移动到一个存储库

时间:2017-08-23 13:53:08

标签: git

我在线阅读关于git的建议,建议每个项目都有一个git存储库。目前我的设置遵循该规则,但最近我拥有的项目数量正在增加(=存储库数量正在增加),我想将常见项目移动到一个存储库中,每个存储库都在孤立分支下(类别类别)。

例如,如果我拥有包含历史记录的P1P2存储库,我希望创建一个包含2个孤立分支的存储库P P1P2并将P1P2存储库中的历史记录传输到P存储库中的相应分支。

我想知道是否有人可以告诉我(git命令)如何将历史P1P2转移到P孤儿分支。

谢谢,

2 个答案:

答案 0 :(得分:1)

完成您在存储库P

中可以执行的操作
git remote add P1 urlToP1
git remote add P2 urlToP2
git fetch --all

您会发现P1和P2的所有分支都为P1/branchName。然后,您可以创建本地分支。

关键点在于git fetch doc

  

从一个或多个其他存储库获取分支和/或标记(统称为“refs”)以及完成其历史记录所需的对象

这些对象包括提交。由于两个原始存储库P1P2不共享任何提交,因此您最终会得到两个单独的图表。

答案 1 :(得分:0)

很好的建议弗朗切斯科。在完成git fetch的工作时,我会通过指定source:target分支并使用您的 local P1P2存储库对它进行一些约束。我还想补充您的答案,以便完全涵盖原始问题。

解决方案

假设您要将masterP1的{​​{1}}分支移动到P2上名为{的两个新的不存在分支中{1}}和P (不要提前创建p1和p2分支)。

  1. 在P上添加远程存储库 p1

      

    您还可以指定回购网址而不是路径。
      即p2

  2. 仅获取所需的内容!(n标志不包括标签,您可能希望将其取出) git remote add P1 ~/path/to/P1 git remote add P2 ~/path/to/P2

      

    语法:git remote add P1 urlToP1

  3. 删除远程存储库 git fetch -n P1 master:p1 git fetch -n P2 master:p2