일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- rsa 복호화
- 스왑 메모리
- fk컬럼 삭제
- rsa java
- 플러터
- lightsail 도메인 연결
- jenkins git ignore file 추가
- docker error
- 내도메인 한국
- springboot3 jstl
- jstl 종류
- 제약조건 제거
- Stored Procedure log
- Docker
- springboot 배포
- Flutter
- swap file
- AES
- spring
- RSA
- XSS 예방
- jstl dependency
- 지속쿠키
- aws
- 세션쿠키
- 하이브리드 암호화
- git
- aws lightsail 배포
- 하이브리드암호화
- aws lightsail
- Today
- Total
easycode
[Git] git에 올렸던 파일 cache, history 삭제하기 (feat. properties 파일에서 민감 정보 분리하기) 본문
[Git] git에 올렸던 파일 cache, history 삭제하기 (feat. properties 파일에서 민감 정보 분리하기)
ez() 2023. 9. 10. 00:05
최근 외부 api(구글 메일, 네이버 SMS API 등)를 사용하다 보니 properties 파일에 해당 api에 필요한 민감정보가 들어가 있어서 민감정보를 gitignore에 추가해야겠다고 생각은 하고 있었는데, 이번에 GCS를 사용해 image를 업로드하는 api를 사용하게 되어 이 기회를 통해 정리해보려 한다.
나는 propeties 파일에 있는 민감 정보를 감춰야 했기에 일단 properties 파일을 분리해 줬다.
▶︎ propeties 분리 후, 분리한 properites 파일을 기존 properites 파일에 추가해 주기 (더 보기)
1. application-원하는 파일명. properties를 생성한다.
2. 중요한 정보가 든 코드를 방금 만든 properties 파일에 옮긴다.
naver sms api에 들어가는 key와 gcs 설정에 필요한 민감 정보를 이 파일에 넣어줬다.
3. 기존 propeties에 아래 코드를 추가해서 분리한 properties 파일에 있는 정보를 쓸 수 있도록 한다.
4. 위에서 중요 정보를 담은 application-원하는 파일명. properties를. gitignore에 추가한다.
1. 해당 파일이 다시 git에 올라가지 않도록 .gitignore에 추가하기 (위 과정을 따라 했다면 이미 되어 있는 상태겠죠?)
2. git에서 캐시 삭제하기
해당 파일이 이미 커밋 등으로 인해 등록되어 있는 상태이므로 먼저 캐시를 삭제해 준다.
git rm -r --cached .
위 명령어를 입력하면 cache가 쭉 삭제될 것이다.
그럼 다시
git add .
git commit -m "[FIX] remove git cache"
git push origin 본인 브랜치
로 푸시해 주면 해당 파일이 .gitignore에 추가된 상태라 해당 파일은 더 이상 git에 올라가지 않는다.
3. History에서 삭제하기
하지만 이미 이전에 커밋, 푸시로 해당 파일이 올려졌던 history가 깃에 남아 있으므로 해당 히스토리를 삭제해야 한다.
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 경로/경로/파일명.확장자' --prune-empty --tag-name-filter cat -- --all
경로의 경우, 나는 "저장소 루트부터의 경로"로 해줬다.
예 ) src/main/resources/application-apikey.properties
만약 여기서 ~ is unchanged 가 떴다면 아마 경로가 잘못되었을 가능성이 크다!! 경로를 다시 설정해 보자.
제대로 수행 됐다면 처음에 [warning]이 뜨고, 몇 초 후에 ~was rewritten 으로 실행된다!
그리고 다시
git add .
git commit -m "[FIX] remove git history"
git push origin --force --all
여기서 중요한 건 --force --all 이다!!! 모든 브랜치의 히스토리에서 해당 파일을 삭제해줘야 하기 때문!
만약 push에서 오류가 뜬다면 특정 브랜치가 강제 푸시가 안되도록 설정되어 있는지 확인해 보자!
우리는 develop 브랜치를 강제 푸시가 안되도록 설정해 뒀었다. 해당 설정은... (더 보기)
프로젝트 repository에서 setting - branches - 해당 브랜치 edit 클릭
맨 밑에 있는 Rules applied to everyone including administrators에서 Allow force pushes 체크
무려 강제 푸시에, 모든 브랜치 적용이다... 팀 프로젝트 중이었던 난 너무 떨렸고... 혹시나 문제가 생기진 않을까 매우 걱정했지만, 팀원의 격려로 진행했다.
결과는?? 정상적으로 적용 됐다!!!
커밋 히스토리에서 해당 파일의 기록이 모두 사라졌다. develop 브랜치에서도!
다음엔 git action에서 해당 파일을 불러올 수 있도록 sercret 폴더에 추가하는 방법을 포스팅하겠습니다.
'Git' 카테고리의 다른 글
[Git] git secret 폴더에 파일 추가하기 (0) | 2023.09.11 |
---|---|
[Git] Git에서 특정 브랜치 git clone 받아오기 (0) | 2023.08.04 |