如何将存储库的深层克隆就地转换为浅拷贝?
我正在使用 git 管理软件的单独安装,以跟踪安装运行时对代码的任何更改(未跟踪和脏文件),但存储库非常大(800MB),因此大约有数百个副本这不是最好的主意。
因此,如果这些存储库可以转换为仅包含当前部署的提交而不是完整树的浅表副本,那就太好了。在升级期间,存储库将被转换回深度克隆,检出特定提交,然后变成新提交的浅层克隆。
git fetch --depth=1 --update-shallow不会缩小 .git 目录大小,我猜它会获取任何新的提交,但不会删除旧数据。添加--shallow-exclude=HEAD^2会使 git 抛出错误,但不完全确定它应该如何工作,我会冒险猜测删除 HEAD^2 会产生冲突的要求,但想要检查 HEAD,这将取决于深度克隆中的 HEAD^2。
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
好的,这就是最终的解决方案:
ORIGIN_URL=$(git remote get-url origin)
COMMIT=$(git rev-parse HEAD)
rm -rf .git
git init .
git remote add origin $ORIGIN_URL
git fetch origin $COMMIT --depth 1
git reset --mixed $COMMIT
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
963 次 |
| 最近记录: |