我正在将项目从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
答案 0 :(得分:1)
当然,设置一个graft
,就是这样。如果您对结果感到满意,可以filter-branch
永久保存。或者,您可以使用filter-branch
立即使用--parent-filter
。
答案 1 :(得分:0)
我可以想到两个解决方案:
创建父存储库并将存储库A和B添加为子模块。您可以阅读git submodule
。
将存储库B作为远程存储库添加到存储库A:
$ git remote add repoB <directory where repo B is located>
现在您可以从回购B中获取,拉取,合并和变基,例如:
$ git checkout master
$ git pull repoB master
(如果更有意义,你可以反过来做:将回购A添加为回购B的远程。适用相同的概念。)