Git 仓库拆分工具 git filter-repo
介绍
git filter-repo 是一个多功能的重写历史工具。其中包含了市面上其他工具没有的功能。
而且与官方工具 git filter-branch 相比性能强很多且功能更多,并且现在已经被 Git 官方推荐为替代使用的第三方工具写在文档中:Git - git-filter-branch Documentation
一个工具是否好用是由细节决定的,这个工具做了很多细致的工作,从而适应了大多数情况,推荐有兴趣的人可以阅读 Design rationale behind filter-repo
意义
其实本质上 Git 仓库是一个完整的版本控制数据库,但有时需要将其中的内容进行改写,比如:
- 由于提交不规范同一个作者有多个名字与邮箱,需要统一提交作者信息
- 将仓库的一个子目录作为一个库添加到另一个项目中,同时保留所有历史
官方仓库 git-filter-repo/contrib/filter-repo-demos 给了一些示例:在仓库历史的开头增加版权信息、删除所有在 gitignore 规则中的修改等等。
环境
- macOS 11.7.1
- Python 3.9.5
- git-filter-repo v2.38.0
安装
这是一个单文件 Python 程序,因此可以直接执行 python3 git-filter-repo
。但是强烈推荐将安装目录配置添加到环境变量 PATH,这样可以直接使用 git filter-repo
来执行。
拆分
在拆分前建议克隆一个新的仓库开始,这里以一个 Unity 项目举例:
|
|
共有 0 条评论