【问题标题】:Can two identically structured git repos be merged when they have never had any common history?两个结构相同的 git repos 可以在没有任何共同历史的情况下合并吗?
【发布时间】:2010-10-13 16:27:52
【问题描述】:

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

如果我能将两者合并,这样repo2repo1 的延续,那就太好了。这可能吗,同时将repo2 的历史记录添加到repo1 的末尾?

【问题讨论】:

    标签: git merge repository


    【解决方案1】:

    你可以fetch one into another:

    $ 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
    

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

    【讨论】:

    • 请注意,您应该在移植后重新设置基准以使其“永久”。
    猜你喜欢
    • 2019-07-18
    • 2020-02-21
    • 2020-02-29
    • 2014-10-21
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多