Dev/Git

local 에 있는 폴더를 git 에 한번에 올리기

린네의 2023. 12. 6. 02:10

 

개인 공부를 시작하면서 본격적으로 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