如何将已克隆的git存储库转换为浅存储库?
git存储库是通过我控制之外的脚本下载的,因此我无法进行浅层克隆.
这样做的原因是为了节省磁盘空间.(是的,我真的很缺乏磁盘空间,所以即使浅存储库存储不多,也需要它.)
我已经试过了
git repack -a -d -f -depth=1
Run Code Online (Sandbox Code Playgroud)
但这实际上使存储库更大.
fuz*_*Tew 43
这对我有用:
git pull --depth 1
git gc --prune=all
Run Code Online (Sandbox Code Playgroud)
use*_*328 12
你可以沿着这条线将git repo转换为一个浅的:
git show-ref -s HEAD > .git/shallow
git reflog expire --expire=0
git prune
git prune-packed
Run Code Online (Sandbox Code Playgroud)
确保进行备份,因为这是破坏性操作,同时请记住,不支持克隆或从浅回购获取!要真正删除所有历史记录,您还需要在修剪之前删除对先前提交的所有引用.
结合 @fuzzyTew 的答案和对该答案的评论:
git pull --depth 1
git tag -d $(git tag -l)
git reflog expire --expire=all --all
git gc --prune=all
Run Code Online (Sandbox Code Playgroud)
想要通过在整个磁盘上运行它来节省空间吗?- 然后运行这个fd命令:
fd -HIFt d '.git' -x bash -c 'pushd "$0" && ( git pull --depth 1; git tag -d $(git tag -l); git reflog expire --expire=all --all; git gc --prune=all ) && popd' {//}
Run Code Online (Sandbox Code Playgroud)
或者只是常规的find:
find -type d -name '.git' -exec bash -c 'pushd "${0%/*}" && ( git pull --depth 1; git tag -d $(git tag -l); git reflog expire --expire=all --all; git gc --prune=all ) && popd' {} \;
Run Code Online (Sandbox Code Playgroud)
创建本地存储库的浅克隆:
git clone --depth 1 file:///full/path/to/original/dir destination
Run Code Online (Sandbox Code Playgroud)
请注意,第一个“地址”应该是 a file://,这很重要。此外,git 将假定您的原始本地 file:// 地址是“远程”(“来源”),因此您需要更新新存储库,指定正确的git remote.
自特定日期以来转换为浅:
git pull --shallow-since=YYYY-mm-dd
git gc --prune=all
Run Code Online (Sandbox Code Playgroud)
也有效:
git fetch --shallow-since=YYYY-mm-dd
git gc --prune=all
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8942 次 |
| 最近记录: |