Git不克隆后续克隆上的所有分支?

我在使用克隆存储库和分支的Git时遇到了一些问题,而且我无法找到对此的答案。 让我描述一下:我们有一个纯粹的主Git仓库,我们都从这里拉到并推到位于本地linux机器上,并且可以通过ssh访问。 我做了这样的克隆到我的USB拇指驱动器,如下所示:

git clone ssh://adahl@gollum//net/repos/netcube/patches.git

这给了我当然一个本地克隆与我的拇指驱动器上的工作副本。 我cd到这个,然后在这个克隆中看到一些分支:

cd patches
git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/stable

到目前为止这么好,但是如果我将我的拇指驱动器上的存储库克隆到我的笔记本上,则稳定分支会丢失。 看到:

cd ..
git clone patches patches2

cd patches2

git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

克隆或者当我试图几个选项git fetch克隆后,没有什么能稳定分支到patches2库。 我想我在这里缺乏理解git,只是用错了方式。 有人可以请我指出我在使用和/或理解方面的错误吗?


请参阅如何克隆Git中的所有远程分支?

如果您确实希望将它包含在克隆中,则需要基于远程分支创建本地分支。 但是,由于您不在远程分支中工作,只要您开始在分支上工作,就会创建本地分支。 在此之前,你并不需要它在你的克隆中,因为你可以在任何时候从远程获取它。

但是,如果笔记本没有网络连接,则必须为所需的所有远程分支创建本地分支,以便在克隆本地回购时克隆它们。

如果你确实有网络连接,可以使用git remote add origin2 ssh://adahl@gollum//net/repos/netcube/patches.git ,然后git fetch origin2 - 随意用更有意义的名字替换origin2


除了@ThiefMaster:

我喜欢

git clone --mirror

要么

git push --mirror 

更新所有(本地和远程)分支参考和标签

其他信息如前所述,--mirror将真正复制回购,因此会覆盖目标中的更改。 源中不存在的分支将被无条件地修剪。

本质上,它就像使用远程工作并执行'git remote update --prune',不同之处在于受影响的分支可以是本地分支以及'远程'参考[1]

@LeSpocky (和其他人?)

现在如果变化消失了,它们将永远不会产生合并问题,所以这很容易。

--mirror是以现实生活中的概念命名的,因此它旨在为目标的差异铺平道路。 如果目标不是裸露的,并且您提交了本地更改,则始终可以通过目标本地分支的git reflog git log -ggit log -ggit reflog )将其回收。

作为一项通用的安全措施,您可以在目标中勾选'git stash save'。

请记住,--mirror的设计目的就是镜像,而这个问题其实就是如何将所有分支复制到裸露的远程。 :)

[1](参考资料在那里,但远程定义不会被复制;如果需要,请在推送目标上从.git / config手动复制到.git / config)


“origin”是给你克隆repo的地方的默认名称,它会自动添加为远程(注意:远程只意味着“回购不是当前的”) - 远程可以在同一台机器上。

patches ,“起源”是指gollum上的原始回购。

patches2 ,“原产地”是指patches

远程跟踪参考(以remotes/开始的参考)实际上并不是本地分支 - 它们只是指向最后知道分支在遥控器上的分支。 因此,在patches ,您可以远程跟踪原始repo的ref,但在patches2 ,您只有patches的本地master分支的远程跟踪参考,因为这是patches2的原点指向的地方。

您可以使用git remote add在克隆之后将其作为另一个远程的patches2 git remote addpatches2 - 或者您可以再次从原始patches克隆而不是从patches克隆。

链接地址: http://www.djcxy.com/p/4445.html

上一篇: Git doesn't clone all branches on subsequent clones?

下一篇: Git Hub Clone All Branches At Once