我创建了一个git存储库来镜像一个实时站点(这是一个非裸的git存储库):
git clone --mirror ssh://user@example.com/path/to/repo
现在,要保持此镜像克隆更新其远程来源的所有更改,我必须使用哪个或哪些命令?
我想保持一切更新:提交,引用,挂钩,分支等。
谢谢!
答案 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
方式。
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
这个答案提供了如何相对容易地实现这一目标的详细步骤: