If it is only about files and revisions both being handled by git diff, would it not ne possible to do something like this? For files git diff -f a[PRESS TAB] For revisions git diff -r a[PRESS TAB] Some sort of flag which says we are handling files or revisions.