如何更新 git 克隆——镜像?

我已经创建了一个 git 存储库来镜像一个活动站点(这是一个非空的 git 存储库) :

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

现在,为了让这个镜像克隆保持从远程起源的所有更改的更新,我必须使用哪个命令或命令?

我希望保持所有内容的更新: 提交、引用、钩子、分支等等。

谢谢!

161825 次浏览

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

git remote update

看这里: Git 没有克隆后续克隆的所有分支吗?

如果你真的想通过拉树枝而不是 push --mirror来达到这个目的,你可以看看这里:

Git 裸存储库中的“ get-all”不会将本地分支与远程分支同步

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

关于提交、参考文献、分支和“ 等等”,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 刚刚指出,不仅“ hook”不由 clone/update进程管理,而且还可以存储、再存储等等。.因此,对于严格的备份,rsync或等价物才是真正的方法。因为这在我的情况下是不必要的(我可以承受没有钩子,隐藏,等等) ,就像我说的,我将坚持 remote update

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