【发布时间】:2010-10-13 16:27:52
【问题描述】:
我有两个小的 git repos。这些项目都从不同的点开始,但收敛到一个非常相似的点(相同的文件名、文件夹结构等)。一个不是另一个的分支,但一个可以被认为是另一个的进化。
如果我能将两者合并,这样repo2 是repo1 的延续,那就太好了。这可能吗,同时将repo2 的历史记录添加到repo1 的末尾?
【问题讨论】:
标签: git merge repository
我有两个小的 git repos。这些项目都从不同的点开始,但收敛到一个非常相似的点(相同的文件名、文件夹结构等)。一个不是另一个的分支,但一个可以被认为是另一个的进化。
如果我能将两者合并,这样repo2 是repo1 的延续,那就太好了。这可能吗,同时将repo2 的历史记录添加到repo1 的末尾?
【问题讨论】:
标签: git merge repository
$ cd project1
$ git config remote.project2.url /path/to/project2
$ git config remote.project2.fetch 'refs/heads/*:refs/project2/*'
$ git fetch project
这将为您提供两个(或更多)分支,其中包含 project1 和 project2 的历史记录。它们仍然是完全独立的,只需使用相同的对象存储即可。
然后(未经测试),您可以使用 graft 文件 (.git/info/grafts) 在其中覆盖提交的父级(例如 project2 的第一个具有最新的 project1 的父级)
正如Dustin 在 cmets 中所说,为了“使其永久化”,通过将 project2 提交重放到 project1 上来进行 rebase。
您在此“Using Git within a project (forking around)”博客条目中还有另一个说明,尤其是“如何拉朋友和影响他人”部分。再次:
git checkout two_point_ooh
git remote add strelau git://gitorious.org/ruby-on-rails-tmbundle/mainline.git
git checkout -b strelau/two_point_ooh
git pull strelau two_point_ooh
是一个类似的过程,但对于分叉的存储库(这不完全是你的情况)
【讨论】: