我在 GitHub 上有两个相关的 git 存储库,它们实际上应该是一个。如何以满足以下上下文的方式将两个项目 merge 为一个项目:
- 每个 repo 目前只有一个 master 分支。
- A 是较旧的 repo,B 是较新的 repo。
- A 是规范 repo (即: repo A 具有我最终希望调用此工具的名称,因此我希望所有 future 的工作,在 B 附加到 A 之后,在 repo A 中完成)。
- B追加到A后,A应该存在,B应该被删除。
- 我不想将一个存储库作为另一个存储库的子目录,我想将两个存储库 merge 为一个存储库。
- 我希望对 A 的 git 历史记录的这种更改是永久性的,这样人们就不必提取引用,而只需克隆更新的存储库 A 并按预期获得一切。
- 两个仓库之间有3个相似的文件:
.gitignore
、readme.md
和package.json
。
最佳答案
这是一个简洁的方法:
来自您本地的 A 存储库
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
解释
- 将名为
b
的辅助远程存储库添加到本地主存储库 - 从中获取所有内容
- 创建一个与名为
b-master
的 b/master 匹配的新本地分支并 checkout 它 - 使用
rebase
命令将您在 A 存储库中所做的所有操作放在 B 存储库中- 在 rebase 期间修复冲突
- 检查你的
master
分支(在 A 上) - merge
master
分支 (A) 到b-master
分支 (B) - 删除现在没用的
b-master
分支
关于git - 将较新的 Git 存储库附加到较旧的存储库以 merge 两个历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55912872/