首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并2个git存储库,保存文件历史,不保存提交历史记录

合并2个git存储库,保存文件历史,不保存提交历史记录
EN

Stack Overflow用户
提问于 2015-06-18 15:08:04
回答 1查看 103关注 0票数 2

我想合并两个git存储库,我想保存文件历史,但我不想保存提交历史。换句话说,我想保持时间的变化,但我不关心SHA校验和。合并后我将不需要旧的存储库。

以下问题的答案对我没有帮助,因为我总是以具有两个根和单独提交历史的回购结束:

我想要做的是,与Detach (move) subdirectory into separate Git repository完全相反,git subtree用于过滤所有影响子目录中文件的提交。

我的两个存储库有一些重叠的目录结构,但是没有重叠的文件(除了.gitignore.gitattributes),我想将它们合并到存储库的根目录。

这两个存储库都有一些标记,它们的命名方案略有不同,但指向特定的版本。例如,repoA有标记A-1.0.0,A-1.0.1,而repoB有标记B-1.0.0,B-1.0.1。我并不真正关心标记、不同分支或一个分支之间的提交,但是在标记中必须有一个合并点。

到目前为止,我能想出的唯一可行的方法是(我已经尝试了我所能找到的所有关于淹没树和合并的方法):

  1. 将repoB添加为远程
  2. 在标记A-1.0.0之前的历史点添加repoA (mergeB)中的分支
  3. cherry-从repoB中选择提交到将B-1.0.0标记到分支mergeB上
  4. 结帐A-1.0.0
  5. 合并分支mergeB
  6. 樱桃-从老标签A-1.0.0+1到老头repoA中的每一次提交
  7. 再枝
  8. 对下一个标记重复步骤3-7。
  9. 当每件事都做完后,做一个重基(也许是交互式的)来清理东西。

这听起来像是很多体力活,有更好的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-18 20:34:05

尝试以下步骤。您基本上是复制文件从一个到另一个,然后开始一个新的回购。或者,将init放在第三个位置,并将两个旧的复制到其中。

代码语言:javascript
复制
git clone repo1 a
git clone repo2 b
cp -r a b
rm -rf a/.git
rm -rf b
cd a
git init

顺便说一句,有一些将snv转换为Git的工具可以保存历史,所以也许您应该研究使用它们。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30919163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档