Git存储库丢失了它的远程分支?

sto*_*tic 17 git version-control

我有一个Git仓库已经远程设置("混帐取"的作品),但它具有任何远程分支:"git的/参/遥控器"文件夹不存在,

git branch -r 
Run Code Online (Sandbox Code Playgroud)

什么都不返回(空列表,没有分支).然而,实际的远程存储库确实有一个分支.如果我再克隆远程回购,我得到另一个地方的回购协议是具备远程分支机构.

我不认为这种状态是可能的.我的问题:

  1. 我到底是怎么进入这种状态的?
  2. 是否有一个命令可以运行以放回".git/refs/remotes"?(没有一个新鲜的克隆,我已经完成了).

附加信息

"git config --get remote.origin.fetch"为空(即命令不产生输出)

"git remote show origin"节目

$ git remote show origin
* remote origin
  Fetch URL: <correct remote url here>
  Push  URL: <correct remote url here>
  HEAD branch: master
  Local ref configured for 'git push':
    master pushes to master (up to date)
Run Code Online (Sandbox Code Playgroud)

tor*_*rek 27

[编辑,2017年4月]如果您使用原始克隆--single-branch,您的remote.origin.fetch设置将成为问题.如果您使用了--depth限制,那也意味着--single-branch.恢复remote.origin.fetch下面描述的正常值,您将获得更全面的克隆.


通常,只需运行即可git fetch恢复远程跟踪分支.

如果git fetch没有恢复它们,那么我想知道:什么云git config --get-all remote.origin.fetch打印?(这假定遥控器已命名origin;如果不是,则替换实际名称.)应设置为+refs/heads/*:refs/remotes/origin/*(再次假设名称origin).特殊情况(例如提取笔记)可能会添加更多行.

  • 手动将您指定的值放入此存储库的 .git/config 文件下的 fetch 变量中确实会导致“git fetch”恢复丢失的远程分支。如果有人知道的话,了解这种情况如何发生对于其他人来说仍然很有价值。 (2认同)

小智 7

这解决了我的问题

git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*

当我执行时vi .git/config,我松开提取线:

fetch = +refs/heads/*:refs/remotes/origin/*

  • 可能值得引用该值以避免外壳通配。`git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'` (3认同)