如何更新git clone --mirror?


144

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

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

现在,要使此镜像克隆保持更新,使其远程原点进行所有更改,我必须使用哪个命令?

我想使所有内容保持更新:提交,引用,钩子,分支等。

谢谢!

Answers:


213

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

git remote update

@Magnus Skog:太好了。谢谢!这是全部吗?我需要另一个命令git fetch吗?还是git remote update一个人就能做到?
J. Bruni

11
我也想知道git fetch有什么区别。
托尔比约恩Ravn的安徒生

1
@Thorbjörn(您必须使用瑞典语ö:)):Git提取只是使用来自远程的远程引用来更新您的存储库。此命令更新镜像存储库上的所有内容
ralphtheninja 2011年

4
这里有一个很好的答案,说明更多:stackoverflow.com/questions/3959924/...
ralphtheninja

16
'git remote update --prune'将完成所有这些操作,但是在从原始存储库中删除分支时将其删除。
teeks99 2014年

8

关于提交,引用,分支和“ et cetera ”,Magnus回答是可行的(git remote update)。

但是不幸的是,就像我想要的那样,没有办法clone/镜像/ update 挂钩

我发现了有关克隆/镜像钩子的非常有趣的线程:

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

我学会了:

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

  • .git/description与钩子一样,还有更多数据(如文件夹)不会被克隆。

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

  • templategit上有这个有趣的功能。

因此,rsync考虑到我的镜像的目的,我可能会忽略此“克隆钩子”或采取某种策略(仅备份+其他克隆的源)。

好吧...我只会忘记钩子克隆,并坚持下去git remote update

  • Sehe刚刚指出,不仅“钩子”不是由clone/ update进程管理,而且还不是存储,重新存储等。因此,对于严格备份rsync或等效备份确实是可行的方法。正如我所说的那样,这对于我来说并不是必须的(我可以负担得起没有钩子,隐藏物等),所以我会坚持使用remote update

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


5

参见此处:Git不会在后续克隆中克隆所有分支吗?

如果您确实希望通过拉分支而不是来实现此目的push --mirror,那么可以在这里看看:

git裸存储库中的“获取--all”不会将本地分支同步到远程分支

此答案提供了有关如何相对轻松实现此目标的详细步骤:


1
push对我来说不是一个选择,因为我需要在接收方(从克隆所在的位置)进行此操作;pull也不是一种选择,因为镜像存储库是一个裸存储库(没有工作树,因此没有“拉”)-似乎git remote update确实做到了所有(比引用的答案容易得多)...总之,谢谢!当然,链接的问题/答案中包含有价值的信息。
布鲁尼

1
好的,我的意思是像平常所说的那样拉。推拉技术。除了没有意义的“主动从客户端处的远程获取数据”之外,几乎没有别的单词,不会复制对git或DVCS系统有意义的单词:)第二个链接将提供您想要的详细信息。请注意,“ git remote update” 实际上并没有保持“ mirror”状态,而没有在此提及的额外操作
2011年

1
嗯...对不起(HTH)-通过原始回购文件夹的简单“ rsync”操作似乎更容易实现“绝对”镜像...不是我想要的,但是..我只是做了一些测试...似乎没有什么可以复制这些钩子-我对此特别感兴趣...
J. Bruni,

1
仅供参考,此镜像的用途仅是:1)如果原始回购服务器上的数据丢失,可以从那里进行完整备份;2)在其他人可以克隆并获得本地工作仓库的地方,而无权访问原始源仓库
J. Bruni

1
如果您想要钩子和所有东西,那么gitosis可能(不记得了)拥有您所需的东西,但是rsync在这种情况下,我会选择使用。另外,我假设您忘记了存储(请参阅此处),并且也重新获取了信息...?
sehe 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.