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

时间:2013-12-02 21:45:04

标签: git version-control

我有一个git存储库远程设置(“git fetch”工作),但它没有有任何远程分支:“。git / refs / remotes“文件夹不存在,

git branch -r 

什么都不返回(空列表,没有分支)。然而,实际的远程存储库确实有一个分支。如果我重新克隆远程仓库,我会得到另一个 具有远程分支的本地仓库。

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

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

    “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)
    

2 个答案:

答案 0 :(得分:26)

[编辑,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)。特殊情况(例如提取笔记)可能会添加更多行。

答案 1 :(得分:5)

这解决了我的问题

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

当我执行vi .git/config时,我松开了获取行:

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