Git: 如何在意外中止后继续 Git 获取?
Git: How to continue Git fetch after an unexpected abort?
服务器端的代码很大,大约20GB。
所以下载需要很长时间。下载超过 10GB 后我尝试了几次,服务器意外中止。
我的操作是这样的:
git fetch --depth=100 url
//about 5GB is downloaded
git fetch --unshallow
// download about 10GB more ,the remote hung up unexpectedly
我可以继续下载吗?如果不能,那10GB也没用,怎么删?
如果提取中止,它不会将任何更改写入您的文件系统。这是因为如果将它们写入您的计算机,您的本地存储库将不会处于稳定状态。
无法恢复 fetch/pull/clone,所以您唯一的选择就是重新获取。
要清理不需要的文件,请使用 git gc
试试看:
$ git gc
来自男人:
NAME
git-gc - Cleanup unnecessary files and optimize the local repository
您无法轻松恢复中止的 fetch/clone,但您可以手动解压已收到的对象:
for pack in $(git rev-parse --git-dir)/objects/pack/tmp_pack*; do
cat "$pack" |
git unpack-objects
done
由于您首先使用的是浅克隆,因此您也可以使用例如git fetch --deepen=100
在一个循环中,直到下载完所有内容以减少中止提取的影响。
似乎支持选项 --deepen=<N>
since v2.11
(end of 2016)。
要删除 10 GB 的额外数据,只需 运行 git prune
。这是最快最安全的方法。您也可以手动删除 <gitdir>/objects/pack/tmp_pack_*
个文件。
原则上 git gc
也可以工作,但它只删除早于 gc.pruneExpire
(默认为两周)的剩余文件。使用选项 --prune=now
是危险的,因为它也会删除所有其他悬挂对象。我不确定这是否也涉及到 reflog,似乎有一个专门的选项。但无论如何,我建议在这种情况下不要使用 --prune=now
。此外,它需要更长的时间(因为它还做其他家务管理工作)。
服务器端的代码很大,大约20GB。 所以下载需要很长时间。下载超过 10GB 后我尝试了几次,服务器意外中止。 我的操作是这样的:
git fetch --depth=100 url
//about 5GB is downloaded
git fetch --unshallow
// download about 10GB more ,the remote hung up unexpectedly
我可以继续下载吗?如果不能,那10GB也没用,怎么删?
如果提取中止,它不会将任何更改写入您的文件系统。这是因为如果将它们写入您的计算机,您的本地存储库将不会处于稳定状态。
无法恢复 fetch/pull/clone,所以您唯一的选择就是重新获取。
要清理不需要的文件,请使用 git gc
试试看:
$ git gc
来自男人:
NAME
git-gc - Cleanup unnecessary files and optimize the local repository
您无法轻松恢复中止的 fetch/clone,但您可以手动解压已收到的对象:
for pack in $(git rev-parse --git-dir)/objects/pack/tmp_pack*; do
cat "$pack" |
git unpack-objects
done
由于您首先使用的是浅克隆,因此您也可以使用例如git fetch --deepen=100
在一个循环中,直到下载完所有内容以减少中止提取的影响。
似乎支持选项 --deepen=<N>
since v2.11
(end of 2016)。
要删除 10 GB 的额外数据,只需 运行 git prune
。这是最快最安全的方法。您也可以手动删除 <gitdir>/objects/pack/tmp_pack_*
个文件。
原则上 git gc
也可以工作,但它只删除早于 gc.pruneExpire
(默认为两周)的剩余文件。使用选项 --prune=now
是危险的,因为它也会删除所有其他悬挂对象。我不确定这是否也涉及到 reflog,似乎有一个专门的选项。但无论如何,我建议在这种情况下不要使用 --prune=now
。此外,它需要更长的时间(因为它还做其他家务管理工作)。