[Way to PM] 개발 도구 - IntelliJ에서 github연동하기

2024. 2. 27. 00:03[Way to PM] 개발 도구

Over View

해당 글은 IntelliJ에서 프로젝트를 github에서 연동하는 방법과

그 과정에서 마주한 간단한 문제 및 의문점(clone, share)에 대한 해결을 다룹니다.

*오류 발견 시 피드백 부탁드립니다!

 


 인텔리제이 GUI에서 프로젝트 파일을 생성하고 github로 연동하려고 할 때 기존 CLI와 약간의 차이가 있다.

 github에 repository를 만들고나면 나오는

echo "# asd" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/sjh101111/asd.git
git push -u origin main

다음과 같은 과정을 따라가거나

gh를 설치하여 (windows 기준 scoop install gh)

gh repo create <repository-name>

다음과 같은 명령어를 입력해주면 됩니다. 

인텔리제이 터미널에서 gh로 commit message를 작성할 때 esc를 눌러도 입력창이 바뀌지 않는 문제는 여기를 참고해 해결할 수 있습니다.

 


 

 인텔리제이 GUI를 이용하면 터미널에 명령어를 사용하지 않아도 git, github repository를 생성하고 연동할 수 있습니다.

 프로젝트 파일 생성 후

1. 좌측 상단의 네비게이션 바를 클릭하면 나오는 VCS메뉴나

2. 프로젝트 메뉴 옆 Version Control을 누르면

좌측부터 1, 2번

 다음과 같이 다양한 기능들을 볼 수 있습니다. 기본적으로 CLI의 흐름대로 깃허브에 연결하고 싶은 레포지토리가 있고 내 프로젝트와 연동하고자 한다면, Enable Version Control Integration이나 Create git repository 기능을 이용하면 됩니다.

 여기서 Enable Version Control Integration이나 Create git repository의 경우엔 사실상 기능이 매우 흡사합니다.(.git파일을 생성해 git repository 생성) 두 가지 기능을 수행하면 메뉴의 VCS가 git으로 바뀌고 좌측 commit이 활성화되므로 초기 커밋을 활성화하고 push할 때 나오는 define remote에 깃허브 레포지토리의 url을 입력하면 연동이 완료됩니다.

 

 하지만 github와 연동을 해주는 기능들 중 약간의 차이가 있는 기능들도 있습니다.

글에서 논해보고자하는 기능들은,

 1. Share on github: 로컬 프로젝트를 GitHub에 새로 공유하고 원격 저장소를 생성하는 과정을 간소화합니다. 주로 프로젝트를 새로 시작하거나, 기존 로컬 프로젝트를 원격에 공유하고자 할 때 사용됩니다.

 2. Get from Version Control: 이미 존재하는 원격 저장소의 내용을 로컬 시스템으로 복제합니다. 프로젝트에 참여하거나, 원격 저장소의 코드를 로컬에서 검토하고 싶을 때 사용됩니다.

 두 가지 입니다. 앞서 말씀드린 케이스에서 이 두 기능을 통해 연동을 하려고 하면 오류를 만나게 되기 때문입니다.

 

 Share on github의 경우 이미 존재하고 있는 깃허브 저장소에 프로젝트를 share하려고 한다면 ' the directory already exists and it is not empty' 라는 오류를 마주하게 됩니다.

 결론부터 말하면 share 기능은 IntelliJ IDEA와 같은 JetBrains의 IDE들이 제공하는 고유 기능으로써, 깃 레포지토리를 생성 -> 깃허브 레포지토리 생성 -> 초기 커밋 및 푸쉬까지 일련의 과정을 한 번에 처리해주는 편한 기능입니다. 

 즉, 깃허브 레포지토리를 생성하는 기능도 포함하기 때문에, 이미 레포지토리를 생성해놓고 또 생성하려고하니 디렉토리가 비어있다는 오류를 마주하게 되는 것입니다.(정확히 레포지토리 이름이 같은 경우)

 이 경우 깃허브 레포지토리를 없애거나, 다른 이름으로 share를 진행하거나, Enable Version Control Integration이나 Create git repository 기능을 이용해 푸쉬할 때 remote repository를 연동하면 됩니다.

 

 Get from Version Control의 경우엔 연동하는 기능이긴 하나 앞서 설명한대로 원격 저장소의 내용을 로컬시스템으로 복제합니다. 인텔리제이의 경우 프로젝트를 만들면 기본 src 및 Maim.java 파일을 만들어주는데, clone( Get from Version Control )은 프로젝트 파일이 비어있어야 저장소의 내용을 가져올 수 있습니다.

 또한, 프로젝트 파일과의 연동을 위해 같은 이름으로 프로젝트 파일을 만들어놓고 clone하려는 경우, 해당 파일을 같은 이름으로 복제해야 하는데 이미 같은 이름의 프로젝트 파일이 있기 때문에 '같은 이름의 파일이 이미 존재한다'는 오류를 마주하게 됩니다. 즉, 다른 이름으로 프로젝트 파일을 만들고 clone을 해야 올바르게 동작합니다.

 

 clone의 경우 당연한 경우인데도 적는 이유는 저와 같은 초심자들을 위함입니다. 단순히 Get from Version Control이라는 문구만 보고 깃허브 저장소와의 연동을 위한 기능인줄 알고 계속 시도를 했으나 오류를 마주했습니다.

 원인과 해결방안을 찾다보니 위와 같은 기능적 오해가 있었습니다.

 

 정리를 하자면 인텔리제이를 이용해 깃 레포지토리를 생성하고, 깃허브와 연동하려고 한다면 

  1. 깃허브에 저장소를 만들고 인텔리제이에서 터미널을 켠 후 커맨드를 따라한다.
  2. 깃허브에 이미 있는 저장소에 연동하고자 한다면 Enable Version Control Integration이나 Create git repository으로 로컬 깃 레포지토리를 만들고 커밋, 푸쉬(define remote)를 통해 연동한다. 
  3. 깃허브에 저장소를 만들지 말고 share on github기능을 통해 깃 레포지토리 생성~ 깃허브 레포지토리 생성~ 푸쉬까지 기능을 한 번에 수행한다.

 등의 세 가지 방법이 있습니다. clone( Get from Version Control )은 기존 레포지토리에 있는 내용을 그대로 가져오고 싶다면 해당 기능을 동작시키면 됩니다.

 

 되게 간단한 것들인데도 처음 접하는 입장에서는 왜, 어디서 오류가 생겼는지 기초를 확실히 잡고가는게 중요하다고 생각하여 정리를 해보았습니다. 기능을 구분하여 습득하기 위해 여러번 깃, 깃허브를 이용하다보니 비슷해보이는 오류라도 인과관계를 알면 다른 점을 명확히 알 수 있었습니다( share와 clone의 경우)

 

 프로그래밍 배운지 두달이 지나가는 시점인데, 처음접하는 오류들에 대해서 간단해 보이는 것도 오래 고민하고 있지만  초기단계에서 많이 고민해보고 인과관계를 명확히 구분해 기초를 닦는 연습이 추후에 진행할 실제 프로젝트를 더욱 견고히 해줄 것이라 믿습니다.