如何清除Git缓存?

21
当我使用git branch -a列出我的分支时,git会显示一些远程分支,但我在我的gitlab上实际上找不到这些分支。我尝试了检出和跟踪这些分支,令人惊讶的是,git居然可以做到。但是当我执行例如git push origin :branch_name时,git会说远程引用不存在,从而证明我在远程没有这些分支。因此我的问题是,这些分支是否存储在某种本地缓存中?如果是,要如何清除它?
5个回答

43
使用git fetch -p命令来清理本地缓存。

8

如在清除旧的远程git分支中所提到的,您应该使用git remote prune origin

我没有使用那里提到的另外两个命令。


3
在macOS上出现了一个奇怪的问题,我会得到虚假的分支大写版本,例如我的远程分支清单在本地显示为Ben/some-branch,但服务器显示为ben/some-branchgit remote prune origin可以(正确地)删除它们,但是git fetch --prune会(错误地)把它们带回来。非常奇怪。
据我所知,在过去的某个时刻,我有一个Ben/something分支,但由于默认的macOS文件系统不区分大小写,.git元数据会挂在一个(大写).git/refs/remotes/origin/Ben文件夹并将其用于(小写)的远程分支引用。 rm -rf .git/refs/remotes/origin/Ben && git fetch让一切恢复正常。

2
谢谢!这是唯一一个帮助我解决分支幽灵大写版本问题的答案。它真的很烦人。 - Ecaterina Galeru

0
您可以使用 git gc 命令清除 Git 存储库中已删除的分支数据。
git gc

默认情况下,git gc会清理任何不可达的对象并执行其他优化操作。如果您想运行更积极的垃圾回收操作,可以使用--aggressive选项:

git gc --aggressive

0
这些是你需要的命令!
git gc --aggressive
git fetch -p 
git rm -r --cached .

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