gpt4 book ai didi

git - git clone --mirror 和 git clone --bare 有什么区别

转载 作者:IT王子 更新时间:2023-10-29 01:10:37 38 4
gpt4 key购买 nike

git clone 帮助页面对 --mirror 有这样的说法:

Set up a mirror of the remote repository. This implies --bare.

但没有详细说明 --mirror 克隆与 --bare 克隆有何不同。

最佳答案

不同之处在于,当使用 --mirror 时,所有 refs 按原样 复制。这意味着一切:远程跟踪分支、注释、refs/originals/*(来自过滤器分支的备份)。克隆的仓库拥有一切。它还进行了设置,以便远程更新将从原点重新获取所有内容(覆盖复制的引用)。这个想法实际上是镜像存储库,拥有一个完整的副本,这样你就可以在多个地方托管你的中央存储库,或者备份它。想想直接复制 repo,除了以更优雅的 git 方式。

documentation几乎所有这些都说了:

--mirror

Set up a mirror of the source repository. This implies --bare. Compared to --bare, --mirror not only maps local branches of the source to local branches of the target, it maps all refs (including remote branches, notes etc.) and sets up a refspec configuration such that all these refs are overwritten by a git remote update in the target repository.

我原来的回答还指出了裸克隆和普通(非裸)克隆之间的区别 - 非裸克隆设置远程跟踪分支,仅为 HEAD 创建本地分支,而裸克隆直接复制分支。

假设 origin 有几个分支(master (HEAD)nextpumaint) ,一些标签(v1v2v3),一些远程分支(devA/master devB/master), 和一些其他的 refs (refs/foo/bar, refs/foo/baz, 可能是笔记, stashes, 其他开发者的命名空间,谁知道)。

  • git clone origin-url (non-bare): 你会得到所有的标签复制,本地分支 master (HEAD) 跟踪远程分支 origin/master,以及远程分支 origin/nextorigin/puorigin/维护。设置跟踪分支,以便如果您执行类似 git fetch origin 的操作,它们将按您预期的方式获取。任何远程分支(在克隆的远程中)和其他引用都将被完全忽略。

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

  • git clone --mirror origin-url: 这些引用中的每一个都将按原样复制。你会得到所有的标签,本地分支master (HEAD), next, pu, and maint,远程分支 devA/masterdevB/master,其他 refs refs/foo/barrefs/foo/baz。一切都与克隆 Remote 中的完全一样。设置了远程跟踪,这样如果您运行 git remote update,所有 refs 都将被覆盖,就好像您刚刚删除了镜像并重新克隆了它一样。正如文档最初所说,它是一面镜子。它应该是功能相同的副本,可以与原件互换。

关于git - git clone --mirror 和 git clone --bare 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3959924/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com