需求
最近发现GitHub
图床仓库容量过大 已经严重影响到使用了 于是我准备将这个仓库按照不同的commit
拆分多个独立的小仓库 方便后期的维护和管理
解决方案
首先创建一个无内容的空分支
1
git checkout --orphan new_branch_name
清除目录下所有的文件
1
git rm -rf .
将指定某个或者某些个
commit
提取到新分支上1
git cherry-pick 12345abc def678 98765fed
如果是一系列连续的
commits
,可以使用范围操作符:1
git cherry-pick commit1^..commit2
如果你想要按照某种模式过滤
commits
,可以使用git log
和grep
结合cherry-pick
:1
git log master --oneline | grep 'pattern' | awk '{print $1}' | xargs git cherry-pick
这里需要将
pattern
替换为你想要匹配的文本,例如一个作者名或者某个关键词git log master
: 由于是空分支 无任何log
记录 这里我要获取master
分支上的commit
信息grep 'pattern'
: 对commit
信息进行匹配过滤--oneline
: 匹配到的commitid
在一行显示awk '{print $1}'| xargs git cherry-pick
: 将匹配到的commit
打印出来 并作为git cherry-pick
的参数
最后 将目录下提取出的文件迁移至新仓库中即可
本文为作者原创 转载时请注明出处 谢谢