깃허브에 개인정보가 올라간 경우 (+ 캐시 삭제)

박영준·2023년 7월 15일
0

Git

목록 보기
12/16

1. application.properties 의 경우

.gitignore 에 등록함으로써 개인정보를 숨길 수 있다.

1) File > New > Resource Bundle

2) application.properties 파일 생성

application-파일이름 으로 application.properties 파일을 생성한다.
( .properties 은 자동적으로 붙는다 )

기존에 있던 application.properties 외에도 application-aws.properties 라는 파일이 생성된 것을 확인할 수 있다.

3) application-aws.properties 로 개인정보 옮기기

기존의 application.properties 에 있던 아래와 같은 개인정보를 application-aws.properties 로 옮겨준다.

spring.datasource.url=jdbc:mysql://localhost:3306/데이터베이스 명
spring.datasource.username=사용자
spring.datasource.password=비밀번호

4) application.properties 에서 application-aws.properties 를 호출하도록 만들기

application.propertie

spring.profiles.include=파일명

// 예시
spring.profiles.include=aws

application- 뒤에 붙은 것이 파일명이다.

5) .gitignore 에 등록하기

gitignore 에 해당 파일의 이름을 입력해준다.

application-파일명.properties

2. application.yml 의 경우

('야믈' 이라고 읽는다)

  • .properties 에 비해
    • 가독성이 좋다
    • 계층식으로 구성되어 겹치는 부분을 제외한 일부만 추가해주면 되므로 편리하다.

1) resources > New > File

2) application.yml 과 application-KEY.yml 파일 생성

application.yml 에는 공개돼도 무방한 정보를 담는다
application-KEY.yml 에는 개인정보를 담는다

3) application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        use_sql_comments: true

  profiles:
    include: KEY

  data:
    redis:
      host: localhost # 배포시 redis로 변경
      port: 6379
  • include 를 통해, 개인정보가 담긴 파일을 표시해준다.

4) application-KEY.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/DB이름
    username: 사용자명
    password: 사용자 비밀번호

  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQLDialect

jwt.secret.key: jwt키

캐시 삭제

1. 문제 상황

위와 같은 방법으로 했으나, 깃허브에 반영이 되지 않은 경우가 있다.
이는 다음과 같은 상황이다.

  1. 깃허브에 push, merge 로 해당 파일을 올렸으나, 개인정보가 그대로 포함된 상태로 올라갔다.
  2. 이를 숨기기 위해, 위와 같은 방법으로 .gitignore 에 등록하고 다시 해당 레포지토리에 올렸다.
  3. 그러나 .gitignore 에 등록된 파일이 여전히 보이는 상태다.

2. 원인

.gitignore 에 파일을 등록하기 전에 이미 올려둔 파일은 캐시 처리가 되어 기록에 남아있게 된다.

이는 변경관리 에 의해 관리되고 있는 파일이기 때문에, .gitignore 에 등록하더라도 변경관리에서 계속 추적을 할 수가 있다.

3. 해결법

따라서, 변경관리가 추적 중인 캐시 파일을 삭제 하는 것이 해결법이다.

1) branch 생성

어떤 작업을 하든 branch 부터 생성해주자.
(그렇지 않으면 marstet 에 바로 push 하는 경우가 생겨버린다.)

방법 1 : 터미널

터미널(Git Bash)에서 할 경우, 아래의 명령어로 브랜치를 생성해주면 된다.

$ git branch [브랜치명]

참고: git bash 사용법

방법 2 : 소스트리 + 터미널

소스트리 > 우측 상단 에 보면, 터미널이 있다.

소스트리를 이용해, main(또는 master) 에 새로운 branch 를 생성해줄 수 있다.

2) 캐시 삭제

git rm -r --cached .

모든 캐시를 삭제

3) 스테이지에 올리기

git add .

캐시를 삭제한 파일을 스테이지에 올리고

4) 커밋

git commit -m "커밋메시지"

커밋메시지를 작성하고 commit 해준다.

그리고 이후엔 push 와 파일 확인 후 merge 를 진행해주면 된다.


참고: [IntelliJ] .gitignore 파일에 application.properties 민감 정보 안나오게 하기
참고: Gitignore 새로 반영하기
참고: [GIT] git 캐시 삭제
참고: [Spring] Springboot 개발 환경 분리 및 Datasource 암호화 하기

profile
개발자로 거듭나기!

0개의 댓글