如何在使用git clone --reference命令后取消关联备用库?

35
我正在使用git clone --reference来减少在慢速连接中的网络流量。
现在,git-clone的手册指出了使用此功能的危险,并建议在克隆后立即使用git repack -a来断开链接,我也是这样做的。
我想知道的是,在我完成重新打包后,是否可以安全地删除.git/objects/info/alternates,或者是否有适当的git命令可用于此操作?
谢谢。
2个回答

34

2
如果您正在使用Git LFS,则--dissociate将防止克隆检索LFS对象并导致错误。您需要像往常一样执行git clone --reference并执行手动步骤,运行git repack -a -d并删除alternates文件。对于非LFS存储库,这个答案是最好支持的方法。 - Phil
1
@Phil 有什么解释吗?我很好奇,我查看了dissociate的源代码,它看起来确实只是执行了这两个命令的等效操作,因此理论上不应该有任何区别。虽然删除文件(unlink)的代码看起来在足够多次失败尝试后会中止(https://github.com/git/git/blob/3034dab9ed6b11970a53099a7b3ca981f1461365/compat/mingw.c#L262),但我不确定这是否是导致它不同的原因。 - Anomalous Underdog
1
@AnomalousUnderdog 抱歉,自从我写下那条评论以来,我已经睡了几百次觉了...感觉就像我第一次看到这个问题,对我来说完全是天书。Git真的很复杂... - Phil
@Phil 啊,别担心,手动操作还是可以的(我几个小时前也在这么做)。 宁愿安全也不要冒险 :) - Anomalous Underdog

25

6
FYI,自问自答是可以的 - user456814
5
实际上,我很感激你录下了答案而不是直接跳过去。 - inger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接