For the last one, the second and third line feel backwards.
Most cases in your summary (i.e. storing on a tracking branch or tag) in general look like:
* <local ref name>: <what happened and where it came from>
<label>: <object names>
where <label> (e.g. old..new) describes what <object names> mean. So to be consistent, the <label> for "same as" case (i.e. storing what is fetched in a local ref, but it was already the same) and "storing anew" case, we might want to say their true object types, not "committish".
Also we probably would want to "s/remote branch/branch" in the "where from" part, since we always say "remote" in fetch anyway.
Then the last case where we do not use local tracking branch would simply be something like:
* fetched branch 'master' of ../git
commit: 695dffeHow about this? Essentially the same as the above but with minor tweaks.
1. the ones we store in our local ref (either branches or tags):
1a) fast-forward
* refs/heads/origin: fast forward to branch 'master' of ../git/
old..new: 1ad7a06..bc1a580 1b) same (only shown under -v)
* refs/heads/next: same as branch 'origin/next' of ../git/
commit: ce47b9f 1c) non-fast-forward, forced
* refs/heads/pu: forcing update to branch 'pu' of ../git/
old...new: 7c733a8...5faa935 1d) non-fast-forward, did not update because not forced
* refs/heads/po: does not fast-forward to branch 'po' of ../git/
old...new: 7c733a8...5faa935 1e) creating a new local ref to store
* refs/tags/v1.4.2-rc4: storing tag 'v1.4.2-rc4' of ../git/
tag: 8c7a1072. the ones we do not store in our local ref (only shown under -v):
* fetched branch 'master' of ../git
commit: 695dffeI think we should reword the "what happened" for 1d to clarify that we did not touch refs/heads/po, but other than that I am reasonably happy about how they look consistent.
But please don't take the above too seriously. As everybody should be very well aware by now, I am very bad at UI designs.