The five command part isn't really possible but you can use custom diffs for merges, git diff, etc. pretty easily. There are projects like diffsitter ( https://github.com/afnanenayet/diffsitter ) for doing more intelligent diffs like this for supported languages.

EDIT: and then an example for the merge stuff I couldn't find while typing before: https://mergiraf.org/ and HN discussion a few years ago: https://news.ycombinator.com/item?id=42093756

Five is enough. Beagle uses five HTTP verbs: GET, POST, PUT, DELETE, PATCH. And it is syntax-aware.

https://replicated.wiki/blog/uris.html

clone, pull, push, branch, merge, add, commit are the ones I use, but that's 7

[deleted]

fetch, rebase, blame?

I intentionally avoid fetch and rebase because you can pull and merge instead

checkout, log, config?

And reflog when you make a mistake.