A basic workflow
Once round the loop: see what changed, choose what goes in, write the message, commit.
This is the loop you will spend most of your time in. It takes four steps, and every one of them is reversible.
The repository in the pictures has three changes waiting: a file that has been edited and already staged, a file that has been edited and not, and a file that Git has never seen.
1. See what changed
Select Working Copy in the sidebar. The middle column lists everything that
is different from your last commit, grouped by what kind of difference it is.

Selecting a file shows its diff on the right. Read it before you stage it — that is the whole reason the diff is next to the list rather than a click away.
2. Choose what goes in
Staging is how you decide which of those changes the next commit will contain.
You are not obliged to commit everything you have done.

Select a file and press ⌥⌘A, or use Repository ▸ Stage All (⇧⌘A) to take everything at once. Both have an opposite — ⌥⌘U and Repository ▸ Unstage All (⇧⌘U) — and unstaging never touches the file itself, only Innesta’s record of what the next commit will contain.
The mark at the right-hand end of each row does the same for one file. At rest it reports how much of that file is staged; point at the row and it becomes the action.
You can also go finer than a file: staging hunks and single lines covers taking part of a file and leaving the rest.
3. Write the message
The commit panel sits under the file list and is always there — you do not have
to open a sheet to start typing. Above the message field, a counter says how
many files are staged; the Commit button stays unavailable until at least
one is, and until the message field has something in it.

If you would rather have a first draft than a blank field, the button in the message field’s top right corner writes one from the staged changes — see AI commit messages.
4. Commit
⌘↩ commits what is staged. The message field empties, the staged files leave the list, and the status bar says what happened.
Then push it, or do not: a commit is local until you send it, and Repository ▸ Sync (⇧⌘S) works out whether that means fetching, pulling, pushing or both.