Git:在子树拆分后删除历史记录中不相关的提交

时间:2015-08-06 15:48:41

标签: git bitbucket git-commit git-subtree

我有回购personal_stuff.git我过去常常存储一大堆早期可能不太好的项目。

偶尔会有其中一个起飞,我必须将子文件夹从personal_stuff/coolnewthing拆分为自己的coolnewthing.git个回购邮件。

为此,我使用

git subtree split -P personal_stuff/coolnewthing -b coolnewthing

然后通过以下方式从另一个新git目录中拉出新分支:

git pull ../../../../personal_stuff coolnewthing

这很好用,但我在历史记录中提供了与不再存在的文件相关的所有提交。

如何过滤掉这些并仅保留与我仍然拥有的文件相关的提交?

1 个答案:

答案 0 :(得分:2)

您可以从原始仓库创建新克隆,并为此新本地仓库选择新的根目录

git clone <url-to-personal_stuff.git> coolnewthing
cd coolnewthing
git filter-branch --subdirectory-filter coolnewthing

注意:这个新本地仓库的来源仍为url-to-personal_stuff.git,因此您需要在推送之前更改原点

git remote set-url origin <url-to-coolnewthing.git>