【问题标题】:how to detach alternates after git clone --reference?如何在 git clone --reference 之后分离替代项?
【发布时间】:2011-01-15 22:26:11
【问题描述】:

我正在使用git clone --reference 来减少慢速连接上的网络流量。

现在,git-clone 的手册页指出了使用它的危险,并建议 git repack -a 断开链接,我在克隆后立即这样做。

我想知道的是 - 在我完成重新打包后,是否可以安全地删除 .git/objects/info/alternates 或者是否有适当的 git 命令来执行此操作?

谢谢

【问题讨论】:

    标签: git clone


    【解决方案1】:

    请注意,git clone 现在有一个新的--dissociate 选项可以执行此操作。它是在 Git 2.3 中添加的:https://github.com/blog/1957-git-2-3-has-been-released

    该选项只是调用git repack -a -d 并删除.git/objects/info/alternates。所以是的,它是安全的。 (来源:https://github.com/gitster/git/commit/d35c8027937546e6b22a2f28123f731c84e3b380

    【讨论】:

    • 如果您使用的是 Git LFS,--dissociate 将阻止克隆检索 LFS 对象并导致错误。您需要像往常一样执行git clone --reference 并执行运行git repack -a -d 和删除alternates 文件的手动步骤。对于非 LFS 存储库,此答案是最受支持的方法。
    • @Phil 有什么解释原因吗?我很好奇,我查看了 dissociate 的源代码,看起来它实际上只是相当于这两个命令,所以理论上应该没有任何区别。虽然删除文件(取消链接)的代码看起来会在尝试足够多的失败后中止(github.com/git/git/blob/…)但我不确定这是否是它与众不同的原因。
    • @AnomalousUnderdog 抱歉,自从我写了那条评论后,我已经睡了几百次了……感觉就像我第一次看到这个问题,对我来说都是希腊语。 Man Git 很复杂...
    • @Phil 啊,不用担心,至少手动操作仍然有效(几个小时前我还在做)。比抱歉更安全:)
    【解决方案2】:

    好的,所以我发现了。答案是肯定的,直接删除alternatives是安全的。不,没有 git 命令可以做到这一点。

    http://thread.gmane.org/gmane.comp.version-control.git/141161/focus=141199

    我知道回答你自己的问题还不够,但我们必须继续前进!

    【讨论】:

    猜你喜欢
    • 2023-03-14
    • 2013-08-13
    • 1970-01-01
    • 2020-03-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    相关资源
    最近更新 更多