What is Git pruning?

GitGit Extensions

Git Problem Overview


I've accidentally pruned some remote branches and I don't really know what the consequence of this is (I clicked the "Prune remote branches" button in Git Extensions, thinking it would delete a remote branch).

The official documentation says "git-prune - Prune all unreachable objects from the object database ". I don't really understand what this means. I'm guessing this might have removed merged branches but I'm not really sure.

Git Solutions


Solution 1 - Git

"Prune remote branches" in Git Extensions executes git remote prune command, which removes your local remote tracking branches where the branch no longer exists on the remote.

See here: https://git-scm.com/docs/git-remote#Documentation/git-remote.txt-empruneem

>Deletes stale references associated with <name>. By default, stale remote-tracking branches under <name> are deleted, but depending on global configuration and the configuration of the remote we might even prune local tags that haven’t been pushed there. Equivalent to git fetch --prune <name>, except that no new references will be fetched. > >See the PRUNING section of git-fetch for what it’ll prune depending on various configuration. > >With --dry-run option, report what branches would be pruned, but do not actually prune them.

Solution 2 - Git

This just garbage collects your branches.

Thats means, if an object (a commit) cannot be reached in any of your branch's ancestors, it will be removed for the git database, and as such couldn't be reach anymore.

This just cleans up a little the git repository and make it lighter.

Solution 3 - Git

It's important to know that prune is repo-bound. Not everyone knows that you can link your local repo to multiple remotes. It comes in handy when, for example, you work with an open-source project and is enforced to work via forks.

So, prune command requires a repo name. In most cases it's git remote prune origin, but you can call your repo anything, it doesn't have to be origin.

Solution 4 - Git

There may be remote feature branches which are removed after we merge them into master. We might have deleted the feature branches as a way of cleaning up. But if you had checked out the deleted branch to the local system and set to status as tracking, git pull will not delete those local branches (because those are already disconnected from the server). To clean up that kind of local orphan branches, git prune command will come handy to help.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDaniel BallView Question on Stackoverflow
Solution 1 - Git1615903View Answer on Stackoverflow
Solution 2 - Gitblue112View Answer on Stackoverflow
Solution 3 - GityuranosView Answer on Stackoverflow
Solution 4 - GitSanthosh JView Answer on Stackoverflow