【问题标题】:Git listing non-existent remotesGit 列出不存在的遥控器
【发布时间】:2013-10-18 08:29:53
【问题描述】:

我最近在我的 Git 存储库配置文件中对我的远程存储库进行了一些更改。我重命名了远程名称,将我的来源更改为另一个远程仓库并重命名了我的旧来源。

例如,我以前有这个:

[remote "origin"]
   url =  blah blah

[remote "future"]
   url = blah blah

我进去改变了它们,使它们看起来像这样:

# formerly the origin
[remote "old-origin"]

# formerly the future repo
[remote "origin']

但是现在,当我输入 git branch -a 时,我看到从旧的“未来”遥控器列出的分支:

remotes/origin/HEAD
remotes/origin/branch1
remotes/origin/branch2
remotes/future/branch1
remotes/future/branch2
remotes/old-origin/master
remotes/old-origin/branch3

我运行了 prune 和 fetch 等,但该列表不会更新。我在我的配置文件中搜索了“未来”,但没有任何结果。我可以运行任何命令来刷新此列表并停止查看那个不存在的遥控器吗?

【问题讨论】:

  • git remote --prune future 应该能够清理你的旧分支。先试试--dry-run
  • 如果我尝试 'git remote prune future --dry-run' 我得到'致命:未来似乎不是 git 存储库
  • git remote prune --dry-run future: 请在参数之前设置选项:)
  • git remote -v 返回什么? future 指的是什么?
  • 那是另一件奇怪的事情。 git remove -v 告诉我:origin ssh://correct/path/to/origin (fetch) origin ssh://correct/path/to/origin (push) old-origin ssh://correct/path/to/old-origin (fetch) old-origin ssh://correct/path/to/old-origin (push) 所以,“未来”的起源甚至没有列出

标签: git git-branch git-remote git-config


【解决方案1】:

您曾经有一个名为 future 的遥控器,但现在没有。

因此,git remote <em>whatever</em> future 无能为力,因为没有名为 future 的遥控器。 (通常git remote update -pgit remote prune,如上面的cmets,会让你摆脱这些。)

最简单的选择似乎是手动删除它们:

git update-ref -d refs/remotes/future/branch1
git update-ref -d refs/remotes/future/branch2

(或rm -r .git/refs/remotes/future 和/或编辑.git/packed-refs,取决于这些参考是否已打包)。

[顺便说一句,我还会运行git config -e(或vi .git/config,这是我通常真正做的:-))并确保没有其他对future远程的剩余引用。]

【讨论】:

  • 太棒了!!这成功了。 refs 被打包了,所以我不得不手动将它们从 packed-refs 文件中删除。此外,git update-ref 也可以在一个分支的基础上工作,但实际上我有相当多的分支要删除,所以手动编辑packed-refs 文件就像一个魅力。再次感谢。
  • git update-ref -d refs/remotes/labee/master 没有帮助我,只删除.git/refs/remotes/labee.git/labee 下的文件并删除.git/packed-refs 中的条目确实有帮助。
猜你喜欢
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 2012-08-01
  • 2014-10-28
  • 2010-12-07
  • 2016-11-08
  • 1970-01-01
相关资源
最近更新 更多