

Checking the diff before commit, solve merge conflicts
Also if it’s well integrated into the IDE it feels less like using a separate tool. For 95% of what I do the ide/gui feels better (fetch, pull, push, commit, checkout, merge). Usually just 2-4 clicks and no need to type the branch name (ticket number and then some)
For Reflog, reset I use the terminal.
If I had to start github desktop or another seperate gui I would use the terminal that’s integrated into the IDE.
Heuristic: keep it until 512, afterwards powers of 2, and numbers like 1000, 2000,…, 10000, 20000,… (regex: [0-9]000+)