Git workflow for UE4 code projects/plugins

This is about git use for projects rather than custom engine builds, but I figure this is still the most relevant forum.

Has anyone nailed down a good git branching workflow for dealing with both engine releases and project releases?

Say I’m working on a plugin. Now 4.14 hits with some breaking changes, so I make some updates resulting in one or more commits. These commits should be included in all subsequent versions of my plugin using 4.14 and later engine versions. When doing general work on my plugin code, I create commits containing changes that, as far as is possible, should go into all subsequent releases of my plugin, across all engine versions I support.

Obviously my main development branch should be for the latest engine version I support. So one option is to start engine version branches as they are superseded. Say master currently corresponds to 4.13. When 4.14 hits, at that point I branch master -> 4.13, and master notionally becomes 4.14. I then make changes required by the new engine version and commit. Then over time I make general feature/bugfix changes and commit those. When I want to release a new version of my plugin, I need to merge those features and bugfixes back into the 4.13 branch if I’m still supporting 4.13. If I do so, I’ll have to manually undo the commits that related to 4.14 API updates.

Is there a workflow that makes this cleaner and doesn’t rely on me remembering to undo the commits related to engine upgrades? Perhaps it’s very straightforward, but I don’t have a lot of experience with git and have got into a mess plenty of times, so I figured I’d try to get some input before experimenting.