🪲문제사항
깃과 깃허브를 연결하려고 했는데
fatal: 'Ratenne' is not a commit and a branch 'main' cannot be created from it
이 오류가 떴다
main브랜치에 분명 Ratenne브랜치가 있음에도 불구하고 Git0| Ratenne 원격 저장소의 브랜치나 커밋 정보를 찾지 못하고 있다.
그래서일단 원격저장소와 로컬저장소를 다시 remote하고 git checkout -b main Ratenne/main 이런식으로 Ratenne브랜치를 다시 추가했는데....
The following untracked working tree files would be overwritten by checkout
이번엔 체크아웃하면 현재 작업파일에 덮여써진다고
체크아웃이 중단되어버렸다 그래서 백업해두고 기존의 깃을 삭제했다
그리고 git init부터 다시 차근차근 시작했는데
To https://github.com/bomberman114/TeamProject1.git
! [rejected] Ratenne -> Ratenne (fetch first)
error: failed to push some refs to 'https://github.com/bomberman114/TeamProject1.git'
git push를했더니 거부당했다.
🔎원인
The following untracked working tree files would be overwritten by checkout:
이 오류가 핵심인데 원격 저장소에 이미 Ratenne 브랜치의 변경사항이 존재하지만, 로컬 Ratenne 브랜치에는 그 변경사항이 반영되지 않아 발생하는것이다. 결국 기존의 파일들과 충돌하게 되고 push가 제대로 작동하지 않게 되는 것이다.
🐣해결
그래서 바로 git pull을 하려고하니 충돌이일어나서 아예 새로운폴더에 깃을만들고 pull을 먼저한다음 백업해둔 내 파일들을 불러와 다시 push를 했더니 해결되었다. 이를 통해 원격저장소의 변경사항을 먼저 반영하게되어 충돌을 방지할 수 있었다.
😶🌫️의문점
처음에는 git push까지 성공적으로 했었는데 깃허브에서 pull request자체가 안됐었다. 깃bash에서는 권한부족이라고 인식해서 삭제하고 새로 생성했다. 이때 아마 계속 push하고 명령어 순서들도 얽히면서 충돌하는 상황이 되었던 거 같다. 그리고 위에 내용대로 처음부터 차근차근 다시해보니 되었다. 결론적으로, 이미 브랜치에 파일들이 있고 메인브랜치가 아니라면 아래와 같은 순서로 생각하면 된다.
1. remote → 2. pull → 3. set upstream → 4. push
remote와 upstream 둘 다 원격저장소와 지역저장소를 연결하는 면에서 비슷하긴하나, upstream은 로컬 브랜치와 원격 브랜치 간의 연결을 설정하여, 이후 git push와 git pull을 간편하게 사용할 수 있도록 만든다..