我有回购personal_stuff.git
我过去常常存储一大堆早期可能不太好的项目。
偶尔会有其中一个起飞,我必须将子文件夹从personal_stuff/coolnewthing
拆分为自己的coolnewthing.git
个回购邮件。
为此,我使用
git subtree split -P personal_stuff/coolnewthing -b coolnewthing
然后通过以下方式从另一个新git目录中拉出新分支:
git pull ../../../../personal_stuff coolnewthing
这很好用,但我在历史记录中提供了与不再存在的文件相关的所有提交。
如何过滤掉这些并仅保留与我仍然拥有的文件相关的提交?
答案 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>