개인 공부를 시작하면서 본격적으로 git 을 사용해보고 있다.
오늘은 공부한 샘플 코드를 local 에서 원격저장소로 업데이트시 발생한 문제애 대해 공유하고자 한다.
1. error: remote origin already exists. 에러 발생시 대응 방법
local 에 연결되어있던 원격 repo 가 있었는데, 다른 repo 로 바꾸고 연결하려고 동일하게 remote add 를 사용했더니 위 오류가 발생했다.
이전 실습 때 동일한 폴더에서 한차례 원격 레포지토리에 연결했던게 문제여서 기존 연결을 끊는 명령어를 입력후 다시 실행하니 정상적으로 연결할 수 있었다.
git remote remove origin // 기존 연결 제거
git remote add origin https://github.com/gahyeonkwon/study.git // 다시 재연결
2. local 에 있는 폴더를 한번에 remote repository 로 올리기
git init
git branch -M main
git remote add origin https://github.com/gahyeonkwon/dev_study.git
git reomte -v
git add .
git commit -m '폴더 샘플 파일 업로드'
git push origin main
사실 위 순서대로 진행하면 크게 문제 없이 올라가는 것을 확인할 수 있다.
단, 올리는 폴더에 파일이 하나라도 있어야 올라갔다. 폴더 안에 파일이 없을 때는 정상적으로 push 가 안되었는데, 이걸 한참 뒤에 알아서 왜 안올라가는지에 대해 엄청 고민했었다.
두번째로, 올리려던 폴더의 하위 폴더안에 다른 .git 파일이 있을 경우 submodule 로 생성되어 올라간다.
지금 생각하면 당연한거긴 하지만... 처음에 submodule 이 뭔지를 몰라서도대체 왜 특정파일만 폴더가 아니라 다른 아이콘으로 올라가는지 알 수 없었다.
알고보니 submodule 로 올라갔던 폴더는 이전 실습시 git init 을 실행했던 폴더였고, git 입장에서는 또 다른 git 저장소를 다른 git 저장소에 올리라고 명령했던거라 당연히 submodule 로 올라갔던 것 같다.
cf. submodule 이란?
- 하나의 레포지토리 (저장소 ) 하위에 다른 레포지토리 (저장소) 를 두어 관리하는 도구이다.
문제가 되는 submodule 을 삭제하려고 노력했는데, rm 명령어로 삭제해도 삭제가 안됐다. 명령어로 안되니 git 사이트에서 직접 삭제 해보려고도 시도 했는데 도저히 삭제하는 버튼을 못찾아서 결국 여러번의 삽질과 같이 아래와 같이 실행해서 삭제할 수 있었다.
1) 로컬에 있는 submodule 에 해당하는 ( .git 파일을 포함하는 ) 폴더 삭제
2) git log 에서 submodule 이 업데이트 된 commit 아이디에 대해 git revert [commitID]
3 commit -> push
간단하게 폴더 올리는 내용인데 생각지도 못한곳에서 시간을 많이 잡아 먹어서 아쉬웠지만 원인 파악이 명확하게 되어서 속이 후련했다. : >
이 글을 보고 같은 문제로 고민하고 있다면 도움이 되었으면 좋겠다 !
'Dev > Git' 카테고리의 다른 글
3 way merge 란? (0) | 2024.11.24 |
---|---|
git rm 명령어를 통해 파일 삭제 하기 (0) | 2023.12.06 |
git fetch 와 push 차이 (0) | 2023.12.06 |
git online repository 연결하기 (0) | 2023.11.30 |
git 설치하는 방법 및 간단한 명령어 (0) | 2023.11.29 |