▶상황
깃허브에서 Repository 만들고 README 파일을 만들어줬다.
그리고 인텔리제이에서 스프링 웹 프로젝트를 만들고
git branch –M main
git remote add origin [레포 주소]
이렇게 로컬과 원격를 연결 해 준 후 커밋하고
git push origin main
로컬의 main브랜치의 내용을 원격의 origin으로 push할려고 했는데
▶문제 발생
이게 뭐람..?
$ git push -u origin main
To https://github.com/wlaud2000/likelion_shop.git
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/wlaud2000/likelion_shop.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. If you want to integrate the remote changes,
hint: use 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
이런 오류가 떴다.
오류는 못참지 바로 구글링 해보니까
hint의 내용은 "Github에 생성된 원격 저장소와 로컬에 생성된 저장소 간 공통분모가 없는 상태에서 병합하려는 시도로 인해 오류 발생." 이었다.
관련이 없는 두 저장소를 병합하는것이 안되도록 설정되어있기 때문에 자체적으로 push를 막았던것이다.
.gitignore 파일 또는 README.md 파일로 인해 발생한다고 하는데..
로컬 허락도 없이 원격 저장소에 README.md 파일을 만들어서 그런건가...??
아무튼, 해결 방법은 2가지가 있다.
▶해결 방법 1
git pull origin master --allow-unrelated-histories
위 명령어를 통해 git pull시에 관련 없었던 두 저장소를 병합하도록 허용하는 방법이 있다.
git은 서로 관련 기록이 없는 이질적인 두 프로젝트를 병합할 때 기본적으로 이것을 거부한다.
위 명령어를 통해서 허용해주는것이다.
그 후 push 해주면 된다.
▶해결 방법 2
강제 push를 하는 방법이 있다.
git push origin +main
로컬 브랜치 앞에 +를 불여서 push를 하면 강제 push가 된다.
하지만 이 명령어를 사용하면 기존 Repository에 있던 내용들이 싹 다 날라가게 된다.
그러므로 가급적 사용하지 않는것이 좋겠고, 위에 방법으로 해결이 안되거나
Repository에 있는 내용이 날라가도 괜찮은 상황에 사용하면 될 것 같다.
▣Reference.
'배우기📖 > Git & GitHub' 카테고리의 다른 글
[GitHub] GitHub Action이란? (0) | 2024.03.09 |
---|---|
[Git&GitHub] 브랜치 전략(GitHub flow, Git flow, Fork와 Pull Request)을 알아보자 (0) | 2024.03.04 |
[GitHub]원격의 브랜치 다루기 (0) | 2024.02.25 |
[GitHub]push, pull, pull 할 것이 있을 때 push를 하면? (1) | 2024.02.25 |
[GitHub]GitHub 원격 저장소 사용하기 (0) | 2024.02.20 |