Background
I'm working with a large team using git for version control. The normal flow is:
- People selecting a ticket from the "backlog queue".
- Working on the issue via a local branch (i.e.
git checkout -b my_feature_branch
). - Making several commits as they go (i.e.
git commit
). - Pushing local changes to a remote branch in order to "backup" their work so it lives on more than one machine, in case the laptop is damaged or stolen (i.e.
git push -u origin my_feature_branch
). - Eventually creating a code review on our private
github page, and doing a squashed merge from the feature branch to
master
.
In addition to the remote feature branches created by employees on an as-needed basis, we have several dozen release branches that are used to create the "gold builds" we ship to customers, i.e. 1.00
, 1.01
, 2.00
, 2.01
, 2.02
, etc.
Problem
Some developers have begun to complain that there are too many branches, and I tend to agree. Some developers haven't been diligent about cleaning up old branches when they are no longer needed (even though github provides a one-button delete feature for this once the code review is complete).
Question
Is there a way to configure our company github deployment so that, when people use
git branch
via the CLI:
- Only our "important/release/gold" branches appear.
- The one-off developer (temporary) branches only appear via
git branch -a
?
The main goal of this is to reduce clutter.
Edit: I found a similar question, but the only answer is not at all applicable (don't use remote branches), which violates my key constraint of allowing people to push to remote branches as a form of data backup. The concept of private namespaces, as hinted by @Mort, seems to be exactly what I'm looking for. Now, how do I accomplish that?