为了账号安全,请及时绑定邮箱和手机立即绑定

git clone --mirror和git clone --bare之间的区别是什么

git clone --mirror和git clone --bare之间的区别是什么

Git
温温酱 2019-07-31 14:01:03
git clone --mirror和git clone --bare之间的区别是什么git clone帮助页面有这样的说法--mirror:设置远程存储库的镜像。这意味着--bare。但是没有详细说明--mirror克隆与克隆的不同之处--bare。
查看完整描述

3 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

不同之处在于,使用时--mirror所有引用都按原样复制。这意味着一切:远程跟踪分支,备注,引用/原件/ *(来自filter-branch的备份)。克隆的回购拥有一切。它也设置为远程更新将从原点重新获取所有内容(覆盖复制的引用)。这个想法实际上是为了镜像存储库,以获得一个完整的副本,以便您可以在多个位置托管您的中央存储库,或者备份它。想想只是直接复制回购,除了更优雅的git方式。

新文档几乎说明了这一切:

--mirror

设置源存储库的镜像。这意味着--bare。相比之下--bare--mirror不仅将源的本地分支映射到目标的本地分支,它还映射所有引用(包括远程分支,注释等)并设置refspec配置,以便所有这些引用都被git remote update目标存储库中的a覆盖。

我的原始答案还注意到裸克隆和普通(非裸)克隆之间的差异 - 非裸克隆设置远程跟踪分支,仅创建本地分支HEAD,而裸克隆直接复制分支。

假设起源有几个分支(master (HEAD)nextpumaint),一些标签(v1v2v3),一些远程分支机构(devA/masterdevB/master),以及其他一些裁判(refs/foo/barrefs/foo/baz,这可能是笔记,储物箱,其他开发者的命名空间,谁知道)。

  • git clone origin-url(非裸):您将得到所有复制的标签,一个本地分支master (HEAD)追踪远程分支origin/master和远程分支origin/nextorigin/puorigin/maint。设置了跟踪分支,这样如果你做了类似的事情git fetch origin,它们就会像你期望的那样被提取。任何远程分支(在克隆的远程中)和其他引用都被完全忽略。

  • git clone --bare origin-url您将获得全部复制的标签,地方分支机构master (HEAD)nextpu,和maint,没有远程跟踪分支。也就是说,所有分支都按原样复制,并且它设置为完全独立,不期望再次获取。任何远程分支(在克隆的远程中)和其他引用都被完全忽略。

  • git clone --mirror origin-url这些引用中的每一个都将按原样复制。你会得到所有的标签,地方分支机构master (HEAD)nextpu,和maint,远程分支机构devA/masterdevB/master其他裁判refs/foo/barrefs/foo/baz。一切都与克隆的遥控器完全一样。设置远程跟踪,以便在运行时,git remote update所有引用都将从原点覆盖,就像您刚删除镜像并重新克隆它一样。正如文档最初所说,它是一面镜子。它应该是功能相同的副本,可与原始版本互换。


查看完整回答
反对 回复 2019-07-31
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

$ git clone --mirror $URL

是一个简称


$ git clone --bare $URL

$ (cd $(basename $URL) && git remote add --mirror=fetch origin $URL)

(直接从这里复制)


当前的man-page如何表达:


相比之下--bare,--mirror不仅将源的本地分支映射到目标的本地分支,它还映射所有引用(包括远程分支,注释等)并设置refspec配置,以便所有这些引用都被git remote update目标存储库中的a覆盖。


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 32741 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信