Git列出不存在的远程仓库

9

我是一个有用的助手,可以为您进行翻译。以下是需要翻译的内容:

最近我在 Git 仓库配置文件中对远程仓库做了一些更改。我将远程名称重命名,将我的 origin 改为另一个远程仓库,并且重命名我的旧 origin。

例如,我之前是这样的:

[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 命令时,我看到列出了来自旧的“future”远程库的分支:

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

我运行了修剪和获取等操作,但是列表就是不会更新。我在配置文件中搜索“future”,但没有结果。有什么命令可以运行来刷新此列表并停止查看不存在的远程吗?


git remote --prune future 应该能够清理你的旧分支。先用 --dry-run 尝试一下。 - VonC
如果我尝试运行 'git remote prune future --dry-run',会得到 'fatal: future does not appear to be a git repository' 的错误提示。 - sma
1
git remote prune --dry-run future: 请在参数之前设置选项 :) - VonC
git remote -v 返回什么?future 指的是什么? - VonC
这是另一件奇怪的事情。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)所以,“未来”的 origin 连都没有列出来。 - sma
1个回答

15

你以前有一个名为future的远程,但现在没有了。

因此,git remote whatever future无法帮助,因为没有名为future的远程。(通常,像上面的注释中一样,git remote update -pgit remote prune可以让你摆脱这些问题。)

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

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远程的引用。】


太棒了!这个方法奏效了。参考已经被打包,所以我必须手动从packed-refs文件中删除它们。此外,git update-ref也可以逐个分支地工作,但实际上我需要删除相当多的分支,因此手动编辑packed-refs文件非常有效。再次感谢。 - sma
1
git update-ref -d refs/remotes/labee/master 对我没有帮助,只有删除.git/refs/remotes/labee下的文件、.git/labee和在.git/packed-refs中删除条目才有用。 - mgol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接