Get to know these commands so you can give yourself a break and keep things simple when using git.

CommandWhat does it do?
git show-branchcompare the commits in 2 or more branches. Use this obsessively / compulsively
git fetchobtain all branches and changes from a remote(s)
git rebasereorder, rename, remove commits, sometimes to add commits from one branch into another
git resetset your active branch to a particular commit
git reset --hardset your active branch to a particular commit and wipe out any uncommitted changes (staged or unstaged) you have going locally
git pushpush code to a remote
git push --force-with-leasesteamroll what’s on the remote (unless there’s something novel there you don’t have locally)
git cherry-pickgrab a commit from anywhere and try to apply it to your current checked-out commit

Git commands to avoid

Try to avoid these as much as possible.

CommandWhat do?When to use
git pullequivalent of (by default) git fetch && git merge <branch>please don’t use this. Use git fetch and git rebase or git merge (if fast-forward) instead
git mergeadd commits from one branch into another using a (sometimes optional) “merge commit”except for fast-forwards, use this as sparingly as possible. Use git rebase instead
git push --forcesteamroll what’s on the remote regardless of whether you have a record of it locallyonly in very rare circumstances
A note on GUI tooling

There are a number of graphical, point-and-click interfaces to Git. Until you are super comfortable with the command line interface, avoid these as much as you can. Once you’ve got the command line down pat and are able to do whatever you want with it, then see if you can get anything more from the GUI.