vcmkrtchyan
vcmkrtchyan

Reputation: 2626

How to clear git caches?

When I list my branches with git branch -a, git shows me remote branches I can't actually find on my remote(gitlab). I tried to checkout and track those branches, and to my big surprise, git did it. But when I do for example git push origin :branch_name, git says that the remote ref does not exist, thus proving that I do not have those branches in my remote. Hence I have a question, are those branches stored in some kind a local cache? And if yes, how to clear it?

Upvotes: 23

Views: 41361

Answers (5)

Md omer arafat
Md omer arafat

Reputation: 466

Those are the commands you need!

git gc --aggressive
git fetch -p 
git rm -r --cached .

Upvotes: 0

Mahdi Bashirpour
Mahdi Bashirpour

Reputation: 18803

You can clear the deleted branch data from your Git repository using the git gc command.

git gc

By default, git gc will clean up any unreachable objects and perform other optimizations. If you want to run a more aggressive garbage collection operation, you can use the --aggressive option:

git gc --aggressive

Upvotes: 0

Ben Mosher
Ben Mosher

Reputation: 13381

I had a weird issue on macOS where I would get phantom Uppercase versions of branches, e.g. my remote branch listing would show Ben/some-branch locally, but the server would show ben/some-branch.

git remote prune origin would (correctly) remove them, but git fetch --prune would (incorrectly) bring them right back. Very weird.

Best I can tell, at some point in the past, I had a Ben/something branch, but because the default macOS filesystem is case-insensitive, the .git metadata was hanging onto a (capitalized) .git/refs/remotes/origin/Ben folder and using it for the (lowercase) remote branch refs.

rm -rf .git/refs/remotes/origin/Ben && git fetch put me back in order.

Upvotes: 4

Jan
Jan

Reputation: 1034

Like mentioned on cleaning up old remote git branches, you should use git remote prune origin.

I didn't use the other two commands mentioned there.

Upvotes: 8

mproffitt
mproffitt

Reputation: 2527

Use git fetch -p to prune your local caches

Upvotes: 52

Related Questions