如何将 Git 子目录拆分为新仓库
原文由 Ellie Huxtable 于 发布,订阅该博客
首先,安装 git-filter-repo。这是一个无任何依赖的 Python 脚本。
安装非常简单,只需将脚本放到 PATH 中的某个位置即可。我的做法是:
curl "https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repo" -o ~/.local/bin/git-filter-path需要注意的是,git-filter-repo 会用子目录中的文件替换仓库中的所有其他文件。为避免数据丢失,请在仓库的全新副本上操作。
假设我们的仓库结构如下:
🦄 ls -l
.rw-r--r-- ellie staff 0 B Mon Jul 29 14:13:39 2024 LICENSE
.rw-r--r-- ellie staff 0 B Mon Jul 29 14:13:34 2024 README.md
drwxr-xr-x ellie staff 64 B Mon Jul 29 14:13:35 2024 src/
drwxr-xr-x ellie staff 64 B Mon Jul 29 14:13:43 2024 subdir/我们希望将 subdir 目录下的内容拆分为一个独立的仓库。
只需运行:
git filter-repo --subdirectory-filter subdir重写提交信息
我平时遵循 Conventional Commits 规范,所以有很多像这样的带作用域的提交:
feat(subdir): do a thing现在 subdir 已经是一个独立的仓库,这些提交信息看起来就有点别扭了。我们来整理一下!
git filter-repo --message-callback '
return re.sub(b"\(subdir\)\n", b"", message, flags=re.MULTILINE)
'随机一篇博客
评论
登录后参与讨论