0%

Git拆分仓库

将功能复杂的版本库拆分为功能单一的版本库并保存所有相关提交信息

示例

比如, Project版本库中存在Pro1和Pro2两个项目文件, 现在我们要将Pro1项目拆分到单独的版本库中进行维护, 并且要保留原有提交信息

文件路径如下

1
2
3
4
5
6
7
8
D:.
├─Project
│ └─Pro1
│ └─File1
│ └─File2
│ └─Pro2
│ └─File1
│ └─File2

1.分离相关提交到新建分支

1
2
3
4
5
# 在Project中执行
# <name-of-folder> : 要拆分出来的文件夹
# <name-of-new-branch> : 分离提交到新建分支
git subtree split -P <name-of-folder> -b <name-of-new-branch>
git subtree split -P Pro1 -b Project1

2.提取分离后的分支

2.1在新路径保存分支

在合适位置新建文件夹后初始化Git, 然后拉取刚才新建的Project1分支即可
查看git log

1
2
3
4
5
6
# <path-of-Project> : 步骤1中创建分支所在的路径, 即Project
# <name-of-new-branch> : 分离后新建分支名
git pull <path-of-Project> <name-of-new-branch>
git pull <path-of-Project> Project1

git log

2.2在Pro1中初始化Git, 不更改原文件夹结构

1
2
3
4
5
6
7
# 在Pro1中执行
git init
git add .
git commit -m "提交信息"

git pull .. Project1
git log