备份git远程存储库

时间:2017-05-16 14:25:11

标签: git

我已经看到了一些通过git clone --mirror备份git远程存储库的建议,我发现了另一种直接制作远程存储库副本的方法, 当git远程存储库损坏时,从一些基本测试重命名副本, 这种方式看起来不错,它有任何副作用吗?

1 个答案:

答案 0 :(得分:1)

有副作用吗?大概。他们重要吗?可能不是。

使用镜像克隆操作备份存储库的一个好处是您可以从另一台服务器执行此操作。将repo复制到另一个目录,如果该另一个目录是原始目录,则无用。 (如果由于git操作中的错误而导致repo被破坏,它会帮助你 - 我从未见过;或者git操作以不可恢复的方式删除信息 - 这不是那么容易实现。但是更常见的故障模式,比如被流星击中的服务器,需要异地备份。是的,尽管很少见,但我认为服务器被流星击中是比git腐败更常见的风险回购......)

但也许你正在复制到网络共享;肯定还有一个fs级别的repo副本,可以用于异地备份。那么两种方法之间根本有什么不同呢?

克隆不会复制reflog。这也意味着它可能无法正确捕获藏匿[*](但为什么你会藏起来?)。如果repo上有本地更改,它们(索引和工作树)将无法被克隆捕获。 (但是,您通常不会对原始仓库进行本地更改...)克隆可能不会复制无法访问的对象。克隆可能会在复制它们时打包松散的对象。

(注意"可能会这样做,可能会这样做&#34 ;;这取决于你如何克隆。远程克隆应该包装对象,并且可以合理地预期忽略无法访问的对象。)

因此,克隆可能会生成更小/更高效的备份映像,但fs级别的副本在技术上是更高保真的备份。也就是说,克隆的东西在原始仓库中可能并不重要。

[*]澄清一下,stash引用应该由镜像克隆复制,这将使最近的存储可以访问;但如果有多个藏匿处,那么"藏匿堆栈"在reflogs中维护