作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我有两个不同的存储库:
Project 1:
Init---A---B---C---HEAD1
Project 2:
Init---D---E---F---G---HEAD2
有没有办法将项目 1(Init 到 HEAD) rebase 到项目 2 的 Init 提交,所以它看起来像这样:
Project 1 & 2:
A---B---C---HEAD1
/
Init---D---E---F---G---HEAD2
项目一和项目二的内容类似。主要区别在于它们的文件结构略有不同,如下所示:
Project1:
MyProject/
File1
File2
File3
Project2:
MyParentProject/
MyProject/
File1
File2
File3
SomeFolder/
SomeOtherFolder/
...etc/
仅供引用:MyProject 不是 MyParentProject 的子模块。 MyProject 和 MyParentProject 作为两个独立的 git 存储库存在于两个不同的位置。
最佳答案
您可以将其中一个视为另一个的远程存储库。在 Project1 中,运行这些命令:
git remote add project2 <path_to_project_2>
git fetch project2
git branch --track project2Branch project2/master
git checkout project2Branch
使用 git log 查找该分支(即 Project2)初始提交的哈希值。然后运行
git checkout master # or whatever branch you want to rebase
git rebase <hash-for-commit>
您现在已将 Project1 重新设置为 Project2 的基础。由于这听起来像是一次性操作,您将只使用一个存储库,因此您可以使用
git remote rm project2
因此,现在您的 master 分支已使用 Project2 的 init 进行了重新设置,并且 project2Branch 具有 Project2 的其余历史记录。这有点像 hack,但它会做你想做的事。
关于git - 如何将一个 repo rebase 到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2247487/
我是一名优秀的程序员,十分优秀!