한달 전쯤 포트폴리오를 위해 만들어둔 레포에서 오래간만에 처음으로 코드 작성후 push 하려고 했다. 리드미만 커밋돼있던 상태.
! [rejected] main -> main (fetch first)
이 에러메시지는 해당 에러는 원격저장소와 현재 작업중인 로컬저장소가 동기화되지 않았을 때 발생한다. 동기화되지 않은 상태에서 다시 push하면 데이터가 소실될 수 있어 하고 경고해주는 것이다.
1️⃣ 동기화를 위해 pull을 하거나
git pull --rebase origin main
pull 이전에 발생한 변경사항을 무시(삭제)한다는 뜻.
이 경우 pull 되지 않은 변경사항은 소실되기 때문에 주의해야 한다.
2️⃣ 강제 push 를 하면 된다.
git push origin +master
나는 혼자 작업하는 거라 강제 푸쉬를 했는데 이젠 이런 에러메시지가 떴다.
🧨 error: src refspec master does not match any
🚨 해당 에러는 깃허브에서 pull 없이 push할 경우 기존 내용을 삭제하거나 하는 문제가 생길 수 있기 때문에, 이런 문제를 피하고자 에러 메세지를 발생시키는 것이라고 한다.
🚨 혹은 repository 정보가 변경되었을 때나
🚨 다른 곳에서 clone 한 repository 를 내 repository 로 새로 만들어서 push 할 때 에러메시지가 나타난다고 한다. 해당 에러가 발생하면 새로운 깃 리파지토리를 init하고, 다시 push 해야 한다.
우선 init이 돼있는지 확인해봤다.
git remote -v
origin https://github.com/zunyange/introduce.git (fetch)
origin https://github.com/zunyange/introduce.git (push)
허거겅 push 했을 때 introduce.git 이라길래 뭐지 싶었는데 introduce repo 에 연결된 듯 싶다. 아무튼 간에 에러를 해결해보겠다.
git init
커밋 메시지를 남긴다.
git 저장소와 연결하기 위해 [레파지토리의 주소]를 복붙한다.
git remote add origin [Github repository Address]
5번까지 완료했는데도 처음 에러가 다시 떴다.
아까 했던 강제 push git push origin +main
를 하면~! 드뎌 성공했다. 😌
세팅했던 파일들도 이제 올라간 걸 보니 리드미만 작성후 remote 연결을 안했나 보다 ㅎㅎ. 그리고 커밋 시간도 17분 전인 걸 보니 에러 발생 전에 커밋한 시점을 그대로 기록하고 있어서 신기하기도 했다. 언제쯤 git에 익숙해질련지,, 꾸준히 git 과 접선을 해야겠다 !!