Git: Import commits from a repo to another repo
我为一个我创建了一个插件的项目有一个很大的Git存储库,这个插件也是带有Git的源控制器。最近我把插件的文件夹复制到主项目文件夹中。现在我有了一个由Git控制的项目文件夹源代码和插件的文件夹,它也是由Git控制的源代码。我的问题是,有没有一种方法可以将提交从插件的存储库导入到主存储库,这样我就可以摆脱插件的.git文件夹?
- 其中一些还是全部?回购协议是有共同的祖先还是完全独立的?
- 插件应该是在一个分支中开发的。有趣的问题。考虑到Git有多强大,可能有一个答案。
- 他可以简单地将整个插件repo导出为补丁,然后将它们应用到项目的repo中。
- @亚伦·迪古拉都是。回购协议没有共同的祖先,它们是完全独立的。
- @Vorac我同意,但是我不知道插件会包含在主项目中,这就是为什么会发生这种情况。
- @Aaron Digulla"他可以简单地将整个插件repo导出为补丁,然后将它们应用到项目的repo中"。通过这样做,我将失去我需要的承诺:(
- @JasonWartz:我相信Git有一个将提交导出为文件的特性,然后您可以在另一个repo中导入该特性。
- 可能重复导入另一个提交到我的报告
- 如何将现有Git存储库导入另一个存储库的可能副本?
在项目文件夹中打开命令窗口。
确保你在树枝上。如git checkout -b plugin-history。
将插件文件夹作为远程文件夹添加:git remote add plugin ../path/to/plugin/repo。
从新远程获取哈希:git fetch plugin。
批量挑选远程分支的所有插件历史记录:
1
| git cherry-pick firstSha1^..mostRecentSha1 |
(这里有更多关于cherry-picking-multiple-commits的说明:如何cherry-pick multiple-commits)
然后,您应该在插件历史分支中将所有历史记录作为新提交。
- 在git remote add plugin ...之后,您还需要执行git fetch plugin操作,否则散列将不在本地存储库中。
- 我已经更新了答案。谢谢。
- @可以删除pesch&252;注释