Git 활용하여 Github에 SpringBoot 파일 업로드하기

변현섭·2023년 5월 17일
0

Github 사용법

목록 보기
1/17
post-thumbnail

1. Github 소개

Github는 개발자들이 자신의 소스코드를 남들과 공유하는 공간이다. 사용하는 목적은 팀원들과의 협업, 코드 공유, 저장, 배포 등이 있을 수 있다. 이번 포스팅에서는 우리가 구현한 SpringBoot 프로젝트를 구축한 서버에 올리기 위해 사용할 것이다.

완성된 SpringBoot 프로젝트를 서버에 올리는 방법은 크게 두 가지이다.

  • EC2에서 프로젝트 git clone하여 실행하기
  • 로컬 머신에서 jar 파일을 만들어 EC2에 복사 후 실행하기

오늘은 전자의 방법을 다뤄볼 것이다. 후자의 방법을 원하는 사람은 이전에 다룬 winscp 사용법을 참고하라. 인텔리제이에서 파일을 빌드하면 libs 디렉토리 안에 .jar파일이 생기는데 이를 winscp(FTP)를 이용해 EC2의 실행파일 위치로 옮기면 된다.
>> winscp 사용법

원래는 개발한 코드를 Github에 올리고, 이를 EC2서버에서 내려받기까지 해야 하지만, 이번 포스팅에선 Github에 업로드하는 것까지만 다룰 예정이고, 이후의 내용은 UMC 7주차 워크북에서 자세히 다루기로 하겠다. 내용이 궁금한 사람들은 아래의 링크를 참고하기 바란다.
>> UMC 7주차 실습 바로가기

2. Github에 파일 업로드

1) git 설치

EC2 서버에 putty로 원격접속한 후, 아래의 명령을 입력하여 git을 설치한다.

$ sudo apt update 
$ sudo apt-get install git
$ git --version

git --version 명령은 git 설치가 완료되었는지 확인하기 위해 사용한다. 깃헙과 서버가 SSH프로토콜로 통신하려면, SSH키를 가지고 있어야하므로, 깃헙에서 SSH KEY를 생성해주어야 한다.

$ cd ~/.ssh
$ ssh-keygen -t rsa - C github메일

참고로 여기서 ~/는 홈 디렉토리를 기준으로 한 상대 경로를 의미하고, .은 숨김파일을 의미한다. 이 명령을 통해 .ssh 디렉토리에 키페어가 생성되고 id_rsa.pub파일이 생성된다. 이제 cat명령으로 내용을 출력해보자.

$ cat id_rsa.pub

2) Github에 파일 업로드

내 컴퓨터의 파일을 깃허브에 올리려면 깃허브에는 원격 저장소가, 내 컴퓨터에는 로컬 저장소가 있어야 하고, 이 둘을 연결하여 로컬 저장소의 파일을 원격 저장소로 보낸다. 아래의 순서로 파일을 업로드할 수 있다. (github 회원가입과 git 다운로드에 대해서는 다루지 않는다. git 다운로드에 관한 자세한 설명을 원할 경우, 아래의 링크를 참조하라.)

① 깃허브에 원격저장소(repository) 만들기

  • 본인의 깃허브 페이지의 Repository 탭에 들어가 New 버튼을 눌러 저장소를 생성한다.
  • 저장소 이름은 아무렇게나 지어도 되고, 컴퓨터에 있는 폴더와 이름이 달라도 된다.
  • 저장소에 대한 설명파일도 있는게 좋기 때문에 Add a README file도 선택한다.
  • Public으로 설정해야 소스 코드 공유가 가능하다.

② 로컬 저장소 만들기

  • 내 컴퓨터 폴더 중 깃허브에 올리려는 폴더에 마우스 우클릭을 했을 때 나오는 Git Bash Here를 열어주면 git 터미널 창이 열린다.
  • 터미널 창에 git init명령을 입력하면 .git파일을 생성하는데, 이는 로컬 저장소를 생성하는 명령이다.

③ 로컬 저장소와 원격 저장소 연결

  • 원격 저장소는 프로필 > Settings > Code에서 확인할 수 있다. HTTPS의 주소를 복사해주자.
  • HTTPS 주소의 형식은 https://github.com/아이디/저장소이름.git이다.
  • 폴더에 원격 저장소가 잘 연결되었는지 확인하고 싶다면 git remote -v를, 기존 연결을 삭제하고 싶다면 git remote rm origin을 사용한다.
git remote -v // 폴더에 원격 저장소가 잘 연결되었는지 확인
git remote rm origin // 기존 연결을 삭제

④ 브랜치 설정

  • 깃허브에는 branch라는 개념이 있는데, 버전이라고 이해하면 된다.

  • 깃허브 저장소의 기본 branch 이름은 main이므로 파일도 main branch에 올려야 한다.

  • 로컬 저장소에서는 branch의 이름이 master로 되어있다. (깃허브에서도 원래는 master였지만, 어감이 좋지 않다는 이유로 main으로 바꾸었기 때문이다)

  • 따라서 branch의 이름을 main으로 바꾸어 주어야 한다.

  • branch의 이름을 바꾸기 위해 git branch -m master main을 입력한다.

  • 변경이 잘 됐는지 확인하기 위해 git branch를 입력한다.

  • 다행히도 branch의 이름을 저장소를 만들 때마다 매번 바꾸어 주어야 하는 것은 아니다.

  • 설정을 통해 자동으로 main으로 명명하도록 만들 수 있다.

  • git config --global init.defaultBranch main 명령을 통해 브랜치의 기본 이름을 설정할 수 있다.

git config --global init.defaultBranch main

이로써 원격 저장소 연결은 모두 끝났다. 하지만, README.md파일은 원격 저장소에만 있고, 로컬 저장소에는 없으므로, 로컬 저장소로 가져와야 한다. 원격 저장소에 있는 것을 로컬 저장소로 가져오는 명령은 pull이다. 아래와 같이 입력하여 README파일을 가져와보자.

참고로 끌어오는 곳을 생략하여 git pull만 적어도, 현재 작업 중인 브랜치에서 pull하므로 상관없다. 깃허브에 올리려고 선택했던 파일 안으로 들어가보면 README파일이 생긴 것을 확인할 수 있을 것이다.

⑤ 파일 업로드

  • 파일 업로드는 add-commit-push의 3단계로 이루어진다. add 명령은 추가할 파일을 인자로 받는데, 모든 변경 사항을 추가하려면 .을 적으면 된다.
git add . // 모든 변경사항을 올리는 경우
git add 파일 or 디렉토리 // 특정 파일(디렉토리)만 올리는 경우
  • add를 사용하기 전에 git status 명령을 사용하면 변경/추가/삭제한 파일들의 목록이 빨간 글씨로 출력된다.
  • 이들은 모두 추적되지 않은 파일(untracked files)로, add를 실행했을 때 add될 파일들이다.
  • 이제 git add .을 이용해 파일을 추가하자.
  • 만약 add를 취소하고 싶다면 아래와 같이 입력하면 된다.
git rm --cached -r // add한 파일 모두 취소
git rm --cached 파일 // 특정 파일만 add 취소

이제 commit을 해보자. git commit -m "commit message" 명령을 통해 커밋 메시지를 입력할 수 있다. 커밋 메시지란 아래와 같이 연한 글씨로 표시되는 메시지를 말한다. My first commit 등 원하는 메시지를 넣어 commit해주자.

마지막으로 원격저장소로 파일을 올리는 push단계를 수행하자. git push origin main을 사용하면 된다.

이제 github의 repository에서 파일이 잘 올라갔는지 확인하면 된다.

만약 저장소가 이미 있는 경우라면 로컬 저장소를 만들 필요 없이 아래의 명령을 순서대로만 입력하면 된다.

git pull origin main
git add .
git commit -m "my first commit"
git push origin main

pull의 경우 main브랜치의 내용이 내 컴퓨터의 내용과 차이가 생겼을 때(팀프로젝트에서 다른 팀원이 브랜치에 무언가 추가한 상황 등) 변경사항을 내 컴퓨터에 반영하는 용도로 사용한다. 그 이후로는 동일하게 add-commit-push 단계를 거치면 된다.

깃허브에 파일을 올렸으니 이제 github에서 git clone으로 우리의 서버로 옮겨오기만 하면 된다. 앞서 이야기했듯 이 내용은 UMC 7주차 실습에서 자세히 다루도록 하겠다.

참고로 말하면, 앞으로는 github에 코드를 업로드할 때 위와 같은 불편한 방식을 사용하지 않을 것이다. IntelliJ에서 편리하게 업로드하는 기능이 있기 때문이다. 따라서 위 내용을 외울 필요는 없으나, add, commit, push, pull 등의 메커니즘은 반드시 이해해두어야 한다.

출처 : https://velog.io/@jonghyun3668/SpringBoot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-EC2-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0
(이 글은 jonghyun3688님의 포스팅을 토대로 만들었다는 점을 밝힙니다.)

profile
Java Spring, Android Kotlin, Node.js, ML/DL 개발을 공부하는 인하대학교 정보통신공학과 학생입니다.

0개의 댓글