如何清除git缓存



当我用git branch -a列出我的分支时,git会显示我在远程(gitlab(上实际上找不到的远程分支。我试着签出并跟踪这些分支,令我惊讶的是,git做到了。但当我这样做时,例如git push origin :branch_name,git说远程引用不存在,从而证明我的远程中没有这些分支。因此,我有一个问题,这些分支是否存储在某种本地缓存中?如果是,如何清除?

使用git fetch -p修剪本地缓存

就像在清理旧的远程git分支时提到的那样,应该使用git remote prune origin

我没有使用上面提到的另外两个命令。

我在macOS上遇到了一个奇怪的问题,我会得到虚幻的Uppercase版本的分支,例如,我的远程分支列表会在本地显示Ben/some-branch,但服务器会显示ben/some-branch

git remote prune origin会(正确地(移除它们,但git fetch --prune会(错误地(将它们直接带回。非常奇怪。

据我所知,在过去的某个时候,我有一个Ben/something分支,但由于默认macOS文件系统不区分大小写.git元数据挂在(大写(.git/refs/remotes/origin/Ben文件夹上,并将其用于(小写(远程分支引用。

rm -rf .git/refs/remotes/origin/Ben && git fetch让我恢复了秩序。

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

git gc

默认情况下,git gc将清理任何无法访问的对象并执行其他优化。如果您想运行更激进的垃圾收集操作,可以使用--aggressive选项:

git gc --aggressive

最新更新