试图将子目录拆分为单独的git仓库,但我如何保留我的提交?

时间:2015-01-03 02:26:47

标签: git git-filter-branch

我一直在关注this answer from "Detach subdirectory into separate Git repository"关于如何使用git subtree命令的指令,以便将子目录从git存储库中拆分出来。它在第一个子目录上工作,但我的第二个目录被拆分,缺少提交。

我的目录树如下所示:

  

GitBooks   
|   
------ SQLBasics   
|   
------ RubyProgramming

我想将这两者分成他们自己独立的存储库,我已经在SQL-Basics上完成了。但是,在RubyProgramming上,每当我按照上面答案中完全相同的指令操作时,子目录就会被拆分并丢失一堆提交。我很确定原因是因为我在一个时间点将目录名从Ruby Programming更改为RubyProgramming(注意其间的空格),我想它只是从{继承了提交{1}}(没有空格)。

我的问题是如何在这个子目录中继承所有提交,即使我在某个时间点更改了它的名称。有可能这样做吗?

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

git filter-branch -f --prune-empty --tree-filter '[ -d RubyProgramming ] && mv RubyProgramming Ruby\ Programming' -- --all
git filter-branch -f --prune-empty --subdirectory-filter Ruby\ Programming --all

首先撤消历史记录中的重命名,然后解压缩单个目录。