Git workflow for avoiding lots of merge noise in the logs

280 views Asked by At

We currently have a workflow where master is the more long-term feature release branch and numbered branches like 3.0 are for releases coming up in the next week or so.

With the above example, we are pushing several last minute changes to 3.0 that need to be merged into master. If we don't merge often, we'll wind up having master out of date without recent changes. If we merge as we go, we have logs full of merges from 3.0 to master.

The seemingly magical command git-rerere seems to solve this problem, but only for local topic branches that you need to update. In other words, it would work if 3.0 was only on one person's machine and not public.

Is there a way to keep master up-to-date without all the ugly merge noise? Do I understand the use of rerere?

1

There are 1 answers

1
Borealid On

rerere stands for "Reuse Recorded Resolutions". All it does is make your merges/rebases easier by remembering decisions you made in the past. It doesn't make them less noisy when they actually happen; what it does allow is going longer without doing a merge (because you can "pre-flight" the merge and not push the results).

Why is "having logs full of merges" an issue? You can use git log --no-merges to show the log without the merge commits.

Your options are basically this:

  • Merge less often, which will make the merges, when you do need them, more difficult
  • Merge more often and live with having merge commits in your logs
  • Use rebasing, and deal with the issues that entails on a public repository
  • Use cherry-picking, which means the branches won't share history