본문 바로가기

형상관리 Git

에러... ! [rejected] main -> main (fetch first)

이 문제로 너무 많은 시간을 해결하는데 보냈다.

문제의 원인은 로컬 저장소와 원격 저장소가 동기화되지 않아 발생하는 문제이다. 기존 데이터가 손실될 수 있기 때문에 push를 막은 것이다. 

해결방법. 구글에서 찾은데로 git pull --rebase origin main (#git pull --rebase[원격저장소이름][브랜치이름])를 해보았다. 그 후에

git push 를 하였더니 아래와같이 git push --set--upstream origin main 을 하래서 그대로 하였더니 문제가 해결되었다.

 

문제를 해결하는 과정에서 찾아낸 유용한 명령어들을 소개 하고자 한다.

 

git log --branches --not --remotes   // git에서 push하지 않은 커밋 확인 


git reset --soft HEAD~1   //commit 상태에있는 파일중 숫자 만큼의 파일을  staged 상태로 워킹 디렉터리에 보존(잘 모르겠지만 commit상태의 파일을 곧바로 unstaged상태로 끌어내리기 위해 아래의 git reset --mixed HEAD~3 를 사용했지만 작동하지 않았음. 그래서 git reset --soft HEAD~3명령어를 사용한 후에 git reset HEAD로 STAGED상태의 파일모두를 UNstaged 상태로 변경함. 

git reset --mixed HEAD~1 //commit 상태에있는 파일중 숫자 만큼의 파일을  UNstaged 상태로 워킹 디렉터리에 보존


$ git reset HEAD <file> // add 명령어로 staged상태의 파일을 Unstage로 변경하기

 

문제 해결에 도움을 준 글: https://realzzu.tistory.com/107

https://stackoverflow.com/questions/14203952/git-reset-asks-more

https://almond0115.tistory.com/entry/GIT-rejected-master-master-non-fast-forward-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95