git add, commit 후 push를 하려하는데 rejected되었다며 제목과 같은 오류가 떴다.
위 오류에 대한 원인은 내 local에는 존재하지 않은 파일(또는 수정사항)이 gitlab(hub)에는 있는 상태
에서 나의 local에 있는 다른 파일을 push하려 할 때 발생한다.
따라서, github 또는 gitlab을 pull 해준 뒤, 다시 push 해주면 정상적으로 작동한다.
git pull {origin} {branch_nm: main, master, ..}
git push {origin} {branch_nm: main, master ..}
그러나, 나같은 경우에는 pull 명령어를 수행할 때 또다른 오류가 발생하였다.
fatal: Need to specify how to reconcile divergent branches.
이 오류에 대한 해결 방법을 git이 힌트를 주는데, 힌트는 다음과 같다.
- git config pull.rebase false #rebase 없이 pull 수행 - git config pull.rebase true # rebase 후 pull 수행 - git config pull.ff only # fast-forward인 경우에만 pull 수행
이 3가지 방법 중에 본인에게 맞는 방법을 선택할 수 있다.
그리고 나같은 경우에는 이미 add, commit 명령어를 수행해뒀기 때문에 그냥 그 명령만 취소해준 뒤, 다시 push 해줄 수 있다.
> git reset HEAD {file name}
[방법1]
> git reset --soft HEAD^ # commit 취소 후 해당 파일들은 staged 상태로 보존
[방법2]
> git reset --mixed HEAD^ # commit 취소 후 해당 파일들은 unstaged 상태로 보존
> git reset HEAD^ # 위와 동일한 역할 수행
[방법3]
> git reset --hard HEAD^ # commit 취소 후 해당 파일들 unstaged 상태로 삭제
++ git push -f {origin} {branch_nm}
을 통하여 강제로 push도 가능하지만, 추천하는 방법은 아님.