如何将git存储库添加到另一个存储库之上

时间:2017-03-17 15:09:34

标签: git tfs tfvc git-tfs

我正在将项目从TFS转换为git,我希望保留所有历史记录。

问题是TFS项目在一年前搬到了TFS。 使用git-tfs我可以将两个位置都转换为git,但现在我有两个git存储库:A和B.

我设法将A和B都放在与不同分支相同的存储库中。是否可以将B中第一次提交的父级更改为A?

中的最后一次提交
Branch A: a -> b -> c
Branch B: d -> e -> f

我想要

a -> b -> c -> d' -> e' -> f'

解决方案:

git filter-branch --parent-filter 'sed "s/^\$/-p <last-commit-in-A>/"' HEAD_OF_B

2 个答案:

答案 0 :(得分:1)

当然,设置一个graft,就是这样。如果您对结果感到满意,可以filter-branch永久保存。或者,您可以使用filter-branch立即使用--parent-filter

答案 1 :(得分:0)

我可以想到两个解决方案:

  1. 创建父存储库并将存储库A和B添加为子模块。您可以阅读git submodule

  2. 的文档,详细了解相关信息
  3. 将存储库B作为远程存储库添加到存储库A:

    $ git remote add repoB <directory where repo B is located>
    

    现在您可以从回购B中获取,拉取,合并和变基,例如:

    $ git checkout master
    $ git pull repoB master
    

    (如果更有意义,你可以反过来做:将回购A添加为回购B的远程。适用相同的概念。)