The issue is that git commit --amend does not—and indeed cannot—change a commit.
Instead, it creates a new commit that smells a lot like the old one, except for whatever you have amended. Then it makes the current branch name point to the new commit instead of the old commit.
If anyone else has the old commit already, they still have it. In this case, you either already sent the commit upstream (with git push), or obtained it from your upstream in the first place (with git fetch followed by something, usually merge or rebase, that set your local branch to include the commit). So they still have the original, and now you have the copy:
C' <-- branch
/
... <- A <- B
\
C <-- upstream/branch
You also still have the original version C, pointed to by upstream/branch (in this diagram) and by your reflogs (where you normally will not see it). You and only you have your "amended" copy C', at least until you publish it somehow.
If you use git push --force you may1 convince your upstream to take it, discarding their copy of the original C. Doing so is annoying to everyone else who may also have a copy of the original C and may be using it for something, so be sure that even if you have permission, you can get forgiveness. :-) If no one else (besides the upstream) has C, or if everyone has agreed to accept this kind of replacement, you're OK.
1Whether the upstream accepts force-push is up to the upstream.