문제 상황1

: application.properties에는 DB의 username, password 등의 보안과 관련된 정보가 입력되어 있다. 따라서 보안을 위해 gitignore에 포함시켜 커밋을 방지하고자 했다. 

spring.datasource.url=[URL]
spring.datasource.username=[USER_NAME]
spring.datasource.password=[PASSWORD]

 

이런 형태로 초기화를 시키고 커밋을 한 후 gitignore에 application.properties의 경로를 입력해두었다. 그런 후 application.properties에 변동사항을 생성하고 다시 커밋을 하여 gitignore에 잘 적용이 됐는지 확인했다. 그러나 git에는 변동사항이 반영되어 있었다. 

 

원인

: .gitignore은 새롭게 git의 추적 대상이 되려는 파일에 대해서만 적용된다.

즉 이미 application.properties는 커밋된 적 있기 때문에 .gitignore에 추가해 두어도 적용되지 않는다는 것이다. 

 

해결책

git rm --cached 해당파일경로

이를 활용해서 해당 파일을 무시하도록 할 수 있다. 

- rm은 remove를 의미하고 --cached는 스테이징 영역(git의 인덱스)을 의미한다.

위 명령어로 인해 로컬에서는 파일이 삭제되지 않지만 git에서는 삭제되며 git의 추적을 끊게 된다.

 

 

문제 상황 2

spring.datasource.url=[URL]
spring.datasource.username=[USER_NAME]
spring.datasource.password=[PASSWORD]

: 해당 형태로 git에 파일이 남아있고 이후 변동사항이 적용되지 않도록 하는 것이 본래의 목적이었다. 그러나 첫 번째 해결책을 따르면 git에서 해당 파일 자체가 사라지게 된다. 

 

해결책

git update-index --assume-unchanged 해당파일경로

: git이 해당 파일의 변경을 무시하게 설정한다. 

- update-index: git의 인덱스(추적 정보)를 조작하는 명령어

- --assume-unchanged: 파일이 바뀌지 않다고 가정하는 명령어

=> 파일에 변동 사항이 발생해도 무시하게 되어 git status에 뜨지 않고, 커밋 대상에도 포함되지 않는다. 

 

다시 추적하도록 하는 방법(참고)

git update-index --no-assume-unchanged 해당파일경로

 

 

정리

  .gitignore git update-index --assume-unchanged
목적 특정 파일을 무시하고 싶을 때 변동 사항을 무시하고 싶을 때
대상 git에 올라가지 않은 파일(추적되고 있지 않은 파일) 이미 git에 올라간 파일(추적되고 있는 파일)
추적 여부 추적x 추적은 하지만 변경 감지x
해지 .gitignore에서 제거 .git update-index --no-assume-unchanged

'GitHub' 카테고리의 다른 글

Commit Message Convention  (1) 2025.04.29
gitIgnore에 추가, 레포지토리의 파일 삭제  (0) 2025.04.29
github 참고  (0) 2025.04.09

커밋 컨벤션

: 협업 시 Commit Message를 일관된 형식으로 작성하기 위한 규칙이다.

 

필요성

- 가독성 향상

- 협업 용이

- 프로젝트 히스토리 관리 용이

 

Commit Message 구조

type : subject		//제목
body			//본문
footer			//꼬리말

 

 

 

Type : Subject

형태: "태그 : 제목"

- 태그

//원칙이 아니기 때문에 규칙이 바뀔 수 있다.

//태그 여러 개 사용 시 콜론으로 구분

Type 설명
Feat 새로운 기능 추가
Fix 버그 수정
Docs 문서 수정
Style 코드 포맷팅, 세미콜론 누락, 코드 변경 없는 경우
Refactor 코드 리팩토링
Test 테스트 코드 추가
Chore 빌드 업무 수정, 패키지 매니저 수정

 

- 하단: https://duektmf34.tistory.com/206 를 참고한 태그

Type 설명 참고사항
Feat 기능 추가 기능 당 최초 한 번만 사용
Build 라이브러리 세팅/ 업데이트 라이브러리 설치 최초 한 번만 사용
Update 라이브러리 버전  업데이트/커스텀  
Config Config 파일 설정  
Remove 파일 삭제  
Fix 기능 에러 수정  
HotFix 치명적인 버그 수정 main 브랜치에 바로 반영
Style UI 관련 CSS 수정  
Chore 단순 코드 수정 주석, 줄 바꿈, import문, 세미콜론 등...
Revise 기능 추가나 덧붙임을 위한 수정  
Typo 오타 수정  
Modify 기능 변경 있는 코드 개선/ 변경  
Refactor 기능 변경 없는 코드 개선  
Asset 이미지, 폰트 리소스 파일
Docs 문서 작성  

 

 

- 제목

규칙
최대 50글자 이내
마침표 및 특수기호 사용 금지
영어로 작성 시 첫 글자는 대문자
명령문
간결하게 서술

 

 

 

Body

: 본문

- 형태: "내용"

규칙
한 줄당 72자 이내
내용의 양에 무관하게 최대한 상세히 작성
변경 사항에 대해 어떻게 보다는 무엇을, 왜를 중심으로 작성

 

 

 

Footer(선택)

형태: "유형: #이슈 번호"

- 이슈 번호 복수일 시 쉼표로 구분

이슈 트래커 유형 설명
Fixes 이슈 수정 중(아직 해결되지 않음)
Resolves 이슈 해결 완료
Ref 참고할 이슈가 있음
Related to 해당 커밋에 관련된 이슈 번호(아직 해결되지 않)

 

.gitIgnore

: Git 버전 관리에서 제외할 파일 목록을 지정하는 설정 파일이다.

=> .gitIgnore에 파일 추가 시 GitHub에 해당 파일이 추가되지 않는다.

 

필요성

- 불필요한 파일 제외

- 보안

- 대용량 파일 제외

 

대상

- 프로젝트 개발과 무관한 파일 (불필요한 파일)

- 빌드 과정에서 생성되는 임시 파일 (불필요한 파일)

- 컴파일된 결과 (불필요한 파일)

- IDE 설정 파일 (불필요한 파일)

     - .idea 폴더: Intellij의 IDE 옵션(프로젝트 별 설정값)을 저장하는 폴

- 암호 (보안)

- API키 (보안)

- 인증 토큰 (보안)

// 참고: https://github.com/github/gitignore

 

GitHub - github/gitignore: A collection of useful .gitignore templates

A collection of useful .gitignore templates. Contribute to github/gitignore development by creating an account on GitHub.

github.com

 

 

작성법

- 주석: #

- 폴더: /폴더명

- 파일: 파일명.확장자

- 폴더 안 파일: /폴더명/파일명.확장자

- 폴더 안 특정 확장자 파일 전부: /폴더명/*.확장자

- 폴더 하위 모든 특정 확장자 파일 전부: /폴더명/**/*.확장

 

.gitIgnore 작성에 유용한 사이트

https://www.toptal.com/developers/gitignore/

 

gitignore.io

Create useful .gitignore files for your project

www.toptal.com

 

 

잘못 올린 파일 삭제

1. 원격 저장소 및 로컬 저장소의 파일 삭제

$ git rm -r [fileName]
//ex) $ git rm -r .idea/

 

2. 원격 저장소의 파일 삭제

: .gitIgnore에 추가하는 파일은 로컬에는 갖고 있기 때문에 원격 저장소에서만 삭제한다.

// --cached: 원격 저장소의 폴더 및 파일을 삭제한다고 알려주는 명령어

$ git rm --cached -r [FileName]
//ex) $ git rm -r .idea/

'GitHub' 카테고리의 다른 글

gitignore에 추가했는데 변동사항이 자꾸 커밋되는 이유가 뭘까?  (0) 2025.05.15
Commit Message Convention  (1) 2025.04.29
github 참고  (0) 2025.04.09

GitHub

 

<main branch로 push 하는 법>

1. git add .

2. git commit -m "description"

3. git push origin main

 

<push한 것을 pull 하는 법>

1. git stash 또는 git commit

2. git pull origin main

3. git stash 했고 다시 불러오고 싶다면 git stash pop

 

<브랜치>

1. 생성: git branch 브랜치명

2. 이동: git checkout 브랜치명

3. 조회: git branch

4. 생성 후 이동: git checkout -b 브랜치

 


 

 

 

 

+ Recent posts