【发布时间】:2014-02-08 15:22:34
【问题描述】:
我实际上有两个存储库:
mainexternal
main 存储库在一段时间后合并到external/main 目录(作为子树)。
现在我想将对external/main 所做的更改迁移回main 存储库,但只有这些提交,而不是其他不相关的提交,例如external/<anything-else>。
我实际上已经尝试过经典的:
git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter main -- --all
但这也会删除对初始 main 存储库所做的所有提交,只留下在 external git 存储库中所做的提交。
所以:如何只保留提交:
a) 制作到初始 main 存储库
和
b) 制作到external (external/main) 的子树
当我尝试git pull -s subtree ../external 时,所有提交都被合并了,包括未更改子树中任何内容的提交。我只想拥有在子树中实际更改某些内容的提交,并且也只有有关子树中文件的信息。
【问题讨论】:
-
ZZZ是如何合并到AAA中的? -
您还可以使用传达一些含义并有助于提高问题可读性的名称,例如存储库的
main和external。 -
使用通常的机制:通过获取
external中的repo,然后使用read-tree将其放入externalrepo 的目录中。 -
@LopSae 已编辑,现在更好了吗?
-
肯定:) 这是一个有趣的问题。
标签: git git-filter-branch git-subtree git-rewrite-history