项目开发中偶尔会碰到这种需求:须要把仓库中的一个子目录独立出来,成为一个全新的独立仓库。但又但愿这个新仓库能保留原来全部的提交记录,方面之后查看。git
以下面的目录结构所示,要将项目仓库中 component_a 目录的代码抽取出来,独立成新仓库。shell
- project_root |- src |- components |- component_a |- component_b
component_a 目录的提交信息抽出为新的 branchcode
cd {path/to/project_root} git subtree split -P {component_a 的相对路径} -b {新分支名称}
二、新建 component_a 仓库,并从源仓库的新分支中拉内容component
mkdir ~/component_a cd ~/component_a git init git pull {path/to/project_root} {新分支名称}