Git, Graphs and Software Engineering
Except most hard but interesting operations with Git are not very visible in histories.<p>They are:<p>- getting a clear status of you repo so you know where you are and what you do;<p>- figure out which one of the various method of undo you need for this specific screw up;<p>- find a practical way to compare this particular version of a snippet with another particular version of a snippet, and work on the result;<p>- merge the terrible mess you coworker rush-pushed to avoid to be the one to have to merge;<p>- rediscover the arcanes required to save only what you want. Maybe I should branch and commit. Or stash. Or reset and add. Or do an interactive thingy ?<p>- survive a rebase with squashing;<p>- use the history, trying to look for clues of what the heck is going on with the current version of your code.<p>- setting up those damn editors, viewers, differs, etc.<p>So I LOVE your idea, because having a set in stone subset of git for most projects that give you one, and only one, obvious way to do X is really needed.<p>But I don&#x27;t think stats will help you. You need a LOT more than that. You need several people that have tried it all, can agree on a solid, versatile yet definitive workflow that will work in the pareto case. And then a UX designer that can sculpt that into something.<p>And right now, I have tried every single git UI under the sun, command line and not, and they all fall short outside of the basic use cases.<p>Some manage to prevent the user from screwing up too much (github client), some have a nice overview window (kraken), some  have defined a clear subset of operations (GUM), some are productive (smart git), some are well integrated to the file explorer (git tortoise) or the IDE (vscode)...<p>But basically, every time I go back to give a Git training session, I have to start with the classic cmd client. Because that&#x27;s the only one I can trust to do the job perfectly. But I also have to provide such a long cheat sheet it&#x27;s not even funny. And it&#x27;s useless before each student perfectly understand what&#x27;s going on anyway.<p>Git is merciless with understanding and doesn&#x27;t allow high level thinking. We have yet to come by with a decent abstraction for it.