如何删除误创建的无效Git远程引用?
解决无效远程跟踪引用无法删除的问题
你遇到的这些$rem/open-pr/xxx属于本地存储的远程跟踪分支引用,常规的prune或branch命令没法删掉它们——因为它们不是远程仓库实际存在的分支,而是你通过错误的fetch命令手动创建的本地引用。
直接用以下方法删除:
单个删除指定引用
执行git update-ref -d命令,填写完整的引用路径即可,比如删除139这个引用:
git update-ref -d refs/remotes/$rem/open-pr/139
注意把$rem替换成你实际的远程仓库名称(比如origin)。
批量删除所有$rem/open-pr/开头的引用
如果要一次性清理所有这类无效引用,用这条命令:
git for-each-ref --format='delete %(refname)' refs/remotes/$rem/open-pr/ | git update-ref --stdin
同样需要将$rem替换为你的实际远程仓库名称。
为什么之前的方法无效?
git branch -D/-d仅用于删除本地分支,远程跟踪分支不属于本地分支范畴,所以命令无效。git fetch --prune和git remote prune origin只会清理远程仓库已不存在的跟踪分支,而这些引用是你手动创建的,远程仓库根本没有对应分支,因此这两个命令不会处理它们。
内容的提问来源于stack exchange,提问作者TomNash
相关产品推荐
相关产品推荐

