"git 分支 -a"显示不再存在的上游存储库



git branch -a显示

master
remotes/origin/master
remotes/upstream/bugfix/corrupted-deb
... (many more remotes/upstream branches)

存储库upstream已不存在。如何永久删除僵尸分支remotes/upstream/bugfix/corrupted-deb等?

文件.git/config包含的不超过

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@<myurl>
fetch = +refs/heads/*:refs/remotes/origin/*

任何有意提及upstream的说法早已不复存在。

命令git remote prune origin[https://stackoverflow.com/questions/8766525]不影响CCD_ 7。git remote prune upstream明显变异导致fatal: 'upstream' does not appear to be a git repository ...

尝试:

git update-ref -d refs/remotes/upstream/bugfix/corrupted-deb

有时你可能会有一个符号参考,比如:

remotes/origin/HEAD -> origin/master

要删除remotes/origin/HEAD,请运行:

git symbolic-ref -d refs/remotes/origin/HEAD

要删除所有remotes/upstream,请尝试:

git for-each-ref refs/remotes/upstream --format="%(refname)" | while read ref;do
git update-ref -d ${ref}
done

git branches -a只是告诉您在.git文件夹中本地有一个文件(在某个时刻通过git fetch创建(。只需移除它:

.git/refs/remotes/upstream/bugfix/corrupted-deb

举个例子,我创建了一个小型测试项目,并手动创建了指向我所做的单个提交的sha的文件.git/refs/remotes/test/feature/mybranch

运行git branch -a现在产生:

/c/dev/remotetest (master)
$ git branch -a
* master
remotes/test/feature/mybranch

删除文件.git/refs/remotes/test/feature/mybranch后,运行git branch -a现在产生:

/c/dev/remotetest (master)
$ git branch -a
* master

/Martin

最新更新