如何更新git clone --mirror?

时间:2011-05-27 09:16:42

标签: git mirror git-clone git-remote git-fetch

我创建了一个git存储库来镜像一个实时站点(这是一个非裸的git存储库):

git clone --mirror ssh://user@example.com/path/to/repo

现在,要保持此镜像克隆更新其远程来源的所有更改,我必须使用哪个或哪些命令?

我想保持一切更新:提交,引用,挂钩,分支等。

谢谢!

3 个答案:

答案 0 :(得分:187)

这是您需要在镜像上执行的命令:

git remote update

答案 1 :(得分:7)

关于提交,引用,分支和“等等”,Magnus回答正常(git remote update)。

但遗憾的是,我无法clone /镜像/ update 隐藏,正如我想的那样......

我找到了关于克隆/镜像钩子这个非常有趣的主题:

http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread

我了解到:

  • 钩子不被视为存储库内容的一部分。

  • 有更多数据,例如.git/description文件夹,它不会被克隆,就像挂钩一样。

  • hooks目录中显示的默认挂钩来自TEMPLATE_DIR

  • git上有这个有趣的template功能。

所以,我可能会忽略这个“克隆钩子的事情”,或者根据我的镜像的目的(仅用于其他克隆的备份+源)来实现rsync策略。

嗯......我会忘记钩子克隆,并坚持git remote update方式。

  • Sehe刚刚指出,不仅“钩子”不是由clone / update进程管理,而且还有stashes,rerere等......所以,对于严格的备份, rsync或等同物真的是要走的路。因为在我的情况下这不是必需的(我可以承受没有挂钩,藏匿等),就像我说的那样,我会坚持remote update

谢谢!改进了我自己的“git-fu”......: - )

答案 2 :(得分:4)

见这里:Git doesn't clone all branches on subsequent clones?

如果您真的想要通过拉取分支而不是push --mirror来实现此目的,那么您可以在这里查看:

"fetch --all" in a git bare repository doesn't synchronize local branches to the remote ones

这个答案提供了如何相对容易地实现这一目标的详细步骤: