Cloud Native Spring in Action

프로젝트 초기화, git 연결

기록해연 2025. 1. 2. 23:27

1. 프로젝트 초기화 (53p)

 

TO DO LIST
1. catalog-service라는 이름의 깃 저장소를 생성
2-1. 스프링 이니셜라이저에서 스프링부트 프로젝트 생성
2-2. 생성된 코드를 방금 만든 catalog-service 저장소에 저장
 
*그래들 프로젝트 관련 메모
: 저자는 그래들-그루비와 그래들-코틀린 중 그래들-그루비로 진행했다. 나도 동일하게 진행.
 


>> 뻘짓구간 시작
이 단락을 보기전에 아래 스프링 이니셜라이저에 대한 얘기가있으니 먼저 조금 내려가서 보길. 여긴 내가 뻘짓한 구간ㅋㅋ....ㅎ............(훌찌락)
 

 
흠... 교재의 저자화면과는 다르게 나는 Spring boot를 바로 설정할 수가 없네, 인텔리제이에 안익숙해서 못찾는건가 ㅎㅎ..!
암튼 그래서 그냥 저대로 만들고 스프링부트 플러그인과 의존성을 추가했다.
 

어찌저찌 잘 빌드되어서 스프링부트는 준비 완료.
 
참고로 윈도우 인텔리제이 터미널에서는 
./gradlew build 대신 gradlew.bat build 을 사용해야 한다.
마찬가지로
./gradlew bootRun 대신 gradlew.bat bootRun 을 사용해야 한다.
 

그리고 교재에 맞춰서 package를 한 단계 더 추가해 com.polarbookshop.catalogservice 로 만들어 메인 소스를 옮겨줬다.
 
 
예, 여기까지 뻘짓구간이었습니다.
이제 스프링 이니셜라이저를 사용해보겠읍니다^^.....

>> 뻘짓구간 끝




※ 스프링 이니셜라이저 (Spring Initializr)
: 브라우저 또는 REST API를 통해 JVM 기반 프로젝트를 생성하기 위해 사용할 수 있는 편리한 서비스.
 
즉, Spring Initializr(스프링 이니셜라이저)는 Spring Boot 프로젝트를 빠르고 쉽게 생성할 수 있도록 돕는 도구이고, 이니셜라이저를 사용하면 프로젝트의 기본 구조와 필요한 설정을 자동으로 만들어 주기 때문에 개발 초기 단계를 간소화할 수 있다.

그런고로,.... 위의 나처럼 뻘짓하지 않아도 된다. 나는 평생 이렇게 해왔는데.... 세상엔 좋은게 참 많다(머리가 나쁘면 몸이 고생한다더니). 싹 밀고 이니셜라이저를 사용해서 다시 만들어보자.
 
Spring Initializr 웹사이트( https://start.spring.io/ )에 접속하면 아래 화면처럼 나오고 정보를 입력하고 Generate를 누르면 우측상단처럼 zip파일로 프로젝트가 만들어진다.

 
해당 zip파일을 원하는 위치에 압축 풀어주고 IDE로 돌아와서 open 시켜 확인해보면, 

 
짜잔... 이렇게 쉽게 생성이 되었습니다. 와장창-

이걸왜이제아라써

 

아 , 그전에 뻘짓구간에서 플젝과 동일한 이름으로 깃 생성 옵션을 클릭했었어서, 깃이 만들어졌는지, 유지되고 있는지 확인하려고 git bash를 켰는데, .... 왜 폴더명에 띄어쓰기를 넣었니...... ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 나는 큰따옴표로 처리했다. 역슬래시로 이스케이프 처리도 가능하다. 하지만 역시 따옴표가 짱이지^^7

 

git status 명령을 통해 깃이 초기화 되었는지 확인.
 

  • 저장소가 초기화되어 있다면, 현재 브랜치 상태(예: On branch main)를 표시
  • 저장소가 초기화되지 않았다면, fatal: not a git repository와 같은 메시지가 출력

초기화가 안되었다면 나처럼 git init 을 입력하여 초기화 진행 후, 초기화 되었는지 ls -a 를 통해 확인
 

github에서 레파지토리 생성

 
내 깃허브로 가서 저장소로 쓸 레파지토리를 하나 만들어준다.

뒤에서 알게된건데 레파지토리 만들 때 기본 리드 미 만들지마세요....^q^.....(충돌난 사람 총총)
 
연결시도.


에러 메시지 1
failed to push some refs to 'https://github.com/yennie37/catalog-service.git'는 로컬 브랜치와 원격 저장소의 기본 브랜치가 일치하지 않아서 발생하는 문제가 있어 로컬브랜치를 메인브랜치로 변경해주고 다시 푸시하니 성공.
 
* refspec 오류 : 로컬 브랜치 이름(master)이 원격 저장소의 브랜치 이름(main)과 일치하지 않을 때 발생.



 
에러 메시지 2
fatal: Authentication failed는 GitHub 원격 저장소에 인증하지 못했음을 의미. 최근 GitHub에서 보안 정책 변경으로 인해 발생한 것으로 보여 개인접근토큰 발급하러 github으로 이동( https://github.com/settings/tokens )
 

 
 
나는 잘 모르는 분야이므로 까불지 않고 챗마카세로 진행.

  • 토큰 생성
    • "Generate new token (classic)" 버튼을 클릭
    • Scope(범위) 설정
      • repo: 원격 저장소에 읽기/쓰기 권한을 부여.
      • workflow: GitHub Actions 사용 시 필요.
    • 만료 기간 설정(필요에 따라).
  • 토큰 복사
    • ★ ★ ★  생성된 토큰은 한 번만 표시되므로 반드시 복사할 것 ★ ★ ★

 

아래가 생각보다 길어져서(오류땜시 ㅎㅎ...) 간략히 정리해보는 토큰 적용 여부 확인 요약

  1. git remote -v 로 URL에 토큰 포함 여부 확인.
  2. URL에 토큰이 없다면, git remote set-url 로 토큰 포함 URL로 변경.
  3. 푸시 테스트로 정상 작동 확인.

 

또 에러,,,,

챗지선생 도와줘...!


"rejected: fetch first" 메시지로, 이는 원격 저장소와 로컬 저장소 간의 커밋 기록이 서로 다르기 때문에 발생한다고 함. 원격 저장소에는 이미 기본적인 파일(예: README.md)이 있을 가능성이 높으며, 이를 로컬 저장소에 먼저 병합해야 함. 

 

나는 병합단계에서 수많은.... 고통과 인내의 시간을 겪다가 걍 이닛시키고 다시 함.

암튼 대충 해결하고 Personal Access Token (PAT) 가 제대로 들갔는지 확인해보고자 함.

git remote -v 명령을 입력했을 때 아래처럼 토큰이 들어간 url이 나오면 성공적으로 들갔다고 보면된다.

origin  https://<토큰>@github.com/username/repo-name.git (fetch)
origin  https://<토큰>@github.com/username/repo-name.git (push)

만약 토큰이 포함되지 않고, 일반 HTTPS URL만 있다면 설정이 제대로 적용되지 않은 것이라고 하니 다시 토큰 세팅해주기..!

 

인증 테스트.

git push -u origin main 명령어 입력시,

 

  • 성공: 변경사항이 원격 저장소로 푸시되며, 토큰이 정상적으로 적용된 상태
  • 실패: 인증 오류 메시지가 뜨면 토큰이 잘못되었거나 적용되지 않은 상태

 

 


+ 번외

내가 일 할 때 깃을 맨날 툴로 썻었어서 ㅎㅎ...

명령어로 관리하는게 익숙치 않은데, 백업용으로 챗지선생의 정리 추가.

 

  • .: 현재 디렉터리의 모든 변경사항을 추가.
  • 특정 파일만 추가하려면 git add <파일명>을 사용.
  • -m: 커밋 메시지를 직접 입력하는 옵션.

 

깃허브에서 확인