需求
最近发现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的参数
最后 将目录下提取出的文件迁移至新仓库中即可
本文为作者原创 转载时请注明出处 谢谢
