git push는 로컬 레포에 있는 commit 사항을 원격 레포로 업로드하는 일이다.
push를 해야 비로소 GitHub의 레포에도 변경사항이 적용되게 된다.

위 예시에서 (origin/main) 이라고 쓰인 부분이 push까지 완료된 부분이고 (HEAD -> main) 부분이 실제 commit된 부분이다.

git status 를 쳐보면, Your branch is ahead of 'origin/main' by 6 commits.라고 뜬다. 즉, 로컬과 원격 레포의 내용이 다르다고 말하고 있다.
git push 를 하고 다시 확인해보면,

다음과 같이 (Head -> main, origin/main) 이라고 뜨는 것을 확인할 수 있다.
--amend 옵션은 자잘한 변경사항을 이미 실행한 commit으로 통합하는 것이다.
다음과 같은 상황이 있을 수 있다.

위와 같이 파일을 수정하고 commit을 한 상태에서, 더 추가했어야 할 내용 한 줄이 떠올랐다면?
한 줄을 더 추가하고 아예 새로운 commit을 하는 것은 비효율적일 것이다.
이때 내용을 추가하고 git add . / git commit --amend를 실행하면, 이전의 commit에 추가로 수정한 내용까지 반영이 된다. ( git add .는 따로 실행해 주어야 함에 유의 )

추가한 내용 두 줄이 하나의 commit으로 통합되었음을 확인할 수 있다.
만약 --amend를 하기 전 내용으로 이미 push했다면, 다음과 같은 에러 메시지가 나올 것이다.

이 때의 상황을 정리하자면 아래와 같다.
로컬 커밋 : a b c d(amend)
원격 레포 : a b c d
지금 업로드하려는 커밋 : d
즉, c 커밋에 연결되는 커밋을 push하려는데, 이미 존재하는 상황이다.
이럴 경우 강제로 push하면 되는데, 이때 -f 옵션을 사용할 수 있다.
git push -f