我有一个 httpdocs 文件夹的git存储库。我让某人为一个模块编写了一些代码,该模块位于 httpdocs 中。这被存储在单独的存储库中。他还编写了一些位于httpdocs之上的代码。我想将所有内容合并到一个存储库中。
回购1:(httpdocs)
/
回购2 :(根)
/src
/vendor
/httpdocs/sites/all/modules/custom_module
我如何将 Repo 1 上移至一个级别并将所有内容放置在名为httpdocs的文件夹中,然后与 Repo 2 合并,同时保留历史记录?
答案 0 :(得分:0)
这就是git merge
命令的subtree strategy option的作用。
回购协议2(根目录之一)应该是您进行合并的位置。您将仓库1添加为远程仓库,并按照git merge -Xsubtree=/httpdocs/sites/all/modules/custom_module httpdocs/master
进行合并。
不要害怕做实验;如果您第一次遇到错误,只需重设为起点并重新开始。在将结果推回中央存储库之前,没有关系。
请注意,如果您以后在Repo 1中进行了一些更新,则git应该能够弄清楚重新合并的路径,因此git merge -ssubtree httpdocs/master
应该可以工作。但是第一次您必须告诉它将子模块放置在何处。