8

我有两个小的 git repos。这些项目都从不同的点开始,但收敛到一个非常相似的点(相同的文件名、文件夹结构等)。一个不是另一个的分支,但一个可以被认为是另一个的进化。

如果我可以将两者合并,那就太好了,这repo2就是repo1. 这可能吗,同时将历史添加repo2到 's 的末尾repo1

4

1 回答 1

6

您可以将一个放入另一个

$ cd project1
$ git config remote.project2.url /path/to/project2
$ git config remote.project2.fetch 'refs/heads/*:refs/project2/*'
$ git fetch project

这将为您提供两个(或更多)分支,其中包含 project1 和 project2 的历史记录。它们仍然是完全独立的,只是使用相同的对象存储。

然后(未测试),您可以使用移植文件.git/info/grafts),您可以在其中覆盖提交的父级(例如 project2 的第一个具有最新的 project1 的父级)

正如达斯汀在评论中所说,为了“使其永久化”,通过将 project2 提交重播到 project1 来进行 rebase。


您在“在项目中使用 Git (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

是一个类似的过程,但对于分叉的存储库(这不完全是你的情况)

于 2009-03-16T18:30:11.387 回答