깃헙 레포지토리에서 이것저것 Repository를 많이 생성하면 보기에도 지저분하고 관리하기도 불편해서 디렉토리 내부에서 연관된 것들을 묶어서 push하여 관리하기가 여러모로 편할 것 같다는 생각을 하였다.
예를들면 인프런의 김영한님 강의를 수강한다고 할때 MVC1 → MVC2 → DB1 .. 와 같은 식으로 강의를 수강할텐데 스프링 프로젝트를 생성할때마다 프로젝트를 만들어서 개별로 리포지토리를 관리하면 여러모로 버거우므로 ‘김영한’이라는 폴더 내에서 MVC1, MVC2 .. 이런 식으로 계층구조로 관리하고 싶었다.
폴더구조의 이해에 대한 부족때문인지 아래와 같이 폴더를 작성해서
push를 하였더니 깃헙 레포지토리 상에서 아래와 같은 문제점이 발생하였다.
사진에서 보이다시피 화살표 모양의 폴더가 생성이 되었고 소스코드를 보기 위해서 해당 폴더를 클릭해도 접근이 불가능하였다.
분명 인텔리제이 상에서는 정상 작동하던 폴더와 코드들이 왜 원격저장소에선 정상적으로 올라가지 않은걸까?
아래는 ‘깃헙 화살표 폴더’라는 키워드로 구글링하여 찾은 결과들이다.
링크를 타서 들어가면 알겠지만 폴더에서 계층구조로 만들경우 하위 폴더에 .git파일이 존재하고 상위 폴더에도 .git폴더가 있을 경우 충돌하게 된다는 것이다.
rm -Rf .git(git의 모든 기록 삭제)
git rm —cached .rf(git 저장소에서 기록만 삭제)
위의 명령어를 이용하여 소스코드가 올라가는 문제는 해결하였다.
참고
깃허브(Github/Git) 화살표 폴더, 폴더 클릭 안 됨 해결
[GIT] modified: (untracked content) 에러 해결하기 - submodule 삭제
그러나 또 다른 문제를 마주치게 되었는데..
아래와 같이 IDE 상에서 Run을 하려고 해도 실행이 되지 않는 현상이 발생하였다.
문제의 가능성은 여러가지였다.
자바 JDK 버전, build 방식의 문제(Intelij, gradle) 등등..수정을 해도 문제는 해결되지 않았다.
여러 방식으로 고민하다가, 자바의 경우 src → main →java 파일이 있을 때,
java파일이 src root 폴더로 설정해야한다는 글을 보고 설정했다.
설정 이후 실행하는데 있어서 문제는 해결되었지만 또 다른 문제에 봉착했다.
‘Cannot find Symbol’로 대변되는 import 문제
이 문제에서 고민했던 것은 import 문이 있을 때 기존 자바 라이브러리는 정상적으로 가지고 오는데 SpringFramework와 관련된 것을 가지고 오지 못했다는 점이다.
따라서 의심되었던 지점이 바로 build.gradle 파일이었고
어쩌면 IDE에서 dependancy를 설정해주는 build.gradle 파일을
제대로 읽어주지 못하고 있는 것이 아닐까하고 생각했다.
그래서 임의로 작성해줬던 루트 디렉토리 내 build 관련 파일을 모두 삭제해줬다.
또한 초기화를 위해 하단의 명령어를 통해 .idea 폴더를 삭제해줬다.
rm -rf ./.idea
다음으로 캡쳐를 하지 못했지만, 프로젝트를 다시 실행했을 때, gradle을 설정하는 위치를 지정해줬다.
다행히도 위와 같은 방법으로 문제를 해결하였고 정상적으로 톰캣까지 띄워주는 것을 확인할 수 있다.
하나 걸리는 점은 폴더 구조를 지속하여 확장할 계획인데 그때마다 폴더 내에서 gradle 폴더를 각기 가지고 있어야 하는지 고민이 된다. 이 지점은 좀 생각해봐야겠다.
참고
intellij에서 git소스를 가져온 후 gradle build 가 되지 않을 때, run application이 정상적으로 되지 않을 때