请考虑以下情形:
我在自己的Git仓库中开发了一个小型实验项目A. 它现在已经成熟,我希望A成为更大的项目B的一部分,它有自己的大型存储库.我现在想添加A作为B的子目录.
如何将A合并到B中,而不会丢失任何一方的历史记录?
我需要将两个Git存储库合并到一个全新的第三个存储库中.我已经找到了很多关于如何使用子树合并进行此操作的描述(例如JakubNarębski关于如何合并两个Git存储库的答案?)并遵循这些说明大多数工作,除了当我提交子树合并所有文件从旧存储库记录为新添加的文件.我可以在旧的存储库中看到提交历史记录git log,但如果我这样做git log <file>,则只显示该文件的一次提交 - 子树合并.从对上述答案的评论来看,我并不是唯一一个看到这个问题的人,但我发现没有公开的解决方案.
有没有办法合并存储库并保持个别文件历史记录完整?
我尝试合并两个repos,产生一个平坦的(也就是交错的)历史.我按照"历史记录重写:"下的/sf/answers/1038775741/这样做.
要合并的两个分支是"master"和"src/master".然后,我写道:
$ git checkout --orphan new-master
$ git cherry-pick 9d325d6d 3f4c52ba
error: a cherry-pick or revert is already in progress
hint: try "git cherry-pick (--continue | --quit | --abort)"
fatal: cherry-pick failed
$ git cherry-pick 9d325d6d && git cherry-pick 3f4c52ba
[new-master 10f0277] Initial revision.
7 files changed, 194 insertions(+)
create mode 100644 __init__.py
create mode 100644 manage.py
create mode 100644 samples/__init__.py
create mode 100644 samples/models.py
create mode 100644 samples/views.py
create mode 100644 settings.py
create mode 100644 urls.py …Run Code Online (Sandbox Code Playgroud)