2015-12-02 134 views
1

我有两个Git仓库,A和B. Repo B正在退役。一些但不是全部的文件需要合并到A的一个分支中,包括他们的提交历史记录,一次可能只有一个文件夹。如果相关的话,那个分支最终将被用于针对A的主分支的github PR。如何将git仓库的一部分迁移到另一个仓库?

  1. 我该如何做到这一点?
  2. 如果在合并后但B退休前对B进行了更改,那么如何更新A?
+0

为什么你需要知识库的一部分的历史?仅仅复制所有需要的文件不是更好吗? – Jepessen

回答

0

有两种情况,我知道你的情况是第二种情况,但我会在这里留下,所以它可能对其他人有用。

案例1

情况1是当共享相同的起源(历史记录),因此一个可从其它拉,反之亦然。

对于问题1:

第一上拉回购

然后,合并一个的分公司没有提交:

git checkout A_branch 
git merge B_branch --no-commit --no-ff 

你不从想将出现新的或新的变化一个的文件分支。删除/丢弃它们。

然后只是提交。这样你最终只需要从B得到想要的东西。

问题2:

再次做同样的事情。

案例2

案例2时一个是完全不同的,他们的文件夹结构也不同,也就是说,没有办法,如果你简单地复制一个文件会发生冲突回购文件夹到另一个(尽管这不是我们要做的)。

如果是这种情况,您可以使用git subtreeThis blog post可以提供更多的细节,但基本上你想要做的是,在回购一个

git subtree add --prefix ./destination_folder https://your_repo.com/B.git master

所以prefix指定回购目标文件夹,然后的地址其次是它的分支。

如果您需要安装git subtree,请参阅该博客文章。

另一种解决这个问题的方法是使用,它结合了两种回购创造了第三个,但我觉得你的情况适合用git subtree更好,所以我就离开了 URL here

+0

他们没有共享相同的历史,对不起。它们完全是独立的回购协议,用于重叠目的;这个要点是摆脱一个,并将没有重复工作的位移动到另一个位置。 – Andrew

+0

对!他们共享通用文件还是具有完全不同的文件夹结构? – Roberto

+0

完全不同。我要迁移的组件不存在于目标回购站(这就是为什么它们是被迁移的组件)。 – Andrew

相关问题