将较新的Git仓库附加到较旧的仓库以合并两个历史记录

问题描述 投票:3回答:2

我在GitHub上有两个相关的git存储库应该真的是一个。如何将两个项目组合到一个项目中,以满足以下上下文的方式:

  • 每个仓库目前只有一个主分支。
  • A是较旧的回购,B是较新的回购。
  • A是规范的回购(即:回购A的名称我最终希望调用此工具,因此我希望将所有未来的工作,在B附加到A之后,在回购A中完成)。
  • B附加到A后,A应存在,B应删除。
  • 我不想把一个repo作为另一个的子目录,我想把两个repos结合起来,好像它们一直是一个repo。
  • 我希望对A的git历史进行此更改是永久性的,以便人们不必拉引用,而只是克隆更新的repo A并按预期获得所有内容。
  • 两个回购之间有3个类似的文件:.gitignorereadme.mdpackage.json
git
2个回答
1
投票

这是一个干净的方法:

From your local A repository

git remote add b https://github.com/your-username/your-b-repo.git
git fetch b
git checkout -b b-master b/master
git rebase master
# fix conflicts if any
git checkout master
git merge b-master
git branch -d b-master

说明

  1. 将名为b的辅助远程存储库添加到本地主存储库
  2. 从中获取所有内容
  3. 创建一个与b / master匹配的新的本地分支,名为b-master并checkout to it
  4. 使用rebase命令将您在A存储库中执行的所有操作放在B存储库中 在rebase期间修复conflits
  5. 检查你的master分支(在A上)
  6. master分支(A)合并到b-master分支(B)
  7. 删除现在无用的b-master分支

1
投票

您可以:

© www.soinside.com 2019 - 2024. All rights reserved.