Amend only works with the very last commit. If you notice your mistake only after adding another commit, amend won't help you much.
Amend rewrites the commit history in your repository: the old commit is replaced by a completely new one (a new and different commit object). This makes it very important that you don't amend (= rewrite) commits that you've already published to a remote repository! Because in that case, your colleagues might have already based their work on this commit - which you would try to replace using "amend".
Therefore, use "amend" whenever you want to change / edit your very last and unpushed commit.
In case you are using the Tower Git client, amending your last commit is easily possible right from the commit area interface:
Changing Older Commits
If you want to change older commits, Git also has a tool for this use case:
$ git rebase --interactive
The "interactive rebase" command, however, is quite an advanced tool: very powerful and a tiny bit dangerous. You should definitely understand what you're doing before applying it! See here if you really need to use it.
If you want easy access to advanced Git tools like "interactive rebase", the Tower Git client can be helpful. For example, you can simply right-click the commit you want to change and select "Edit Commit Message". In the background, an Interactive Rebase session is performed to make this possible:
No matter if you're using "Interactive Rebase" from the Command Line or via Tower, the mode of action is the same as with the --amend flag: you are rewriting history! Therefore, just as with amend, you should not use interactive rebasing on commits you have already pushed!