1. 문제
git을 사용하다보면 개발폴더 내에 있는 파일이지만 공개적인 코드저장소엔 올리고 싶지 않은 파일이 있다.
예를 들자면, /upload 폴더의 내용이라던가 개발상 필요한 API코드가 들어간 파일이라던가..
혹은 node_modules 과 같은 패키지 설치 폴더라던지..
API키가 노출되면 자동으로 리셋을 시켜버리는 서비스도 있다.
이런 상황을 피하기 위해 우리는 레포지토리 상에서 민감한 내용은 삭제해야 하며, 더 나아가 커밋을 할때마다 해당 내용은 커밋에서 제외할 수 있어야 한다.
필자 역시도 node_module의 폴더가 push되어있어 해당 폴더를 지우려한다.
.env 역시도 개인적인 내용이 들어가 있어 커밋에서 제외할 예정.
2. 해결 방안
우리는 .gitignore이라는 파일을 사용해서
우리가 원하는 파일/폴더들을 untracked 시켜줄거다.
.gitignore의 사용법은 간단하다.
로컬 레포지토리 폴더에서 .gitignore을 생성한다.
이후,
이런식으로 적어준다.
적어주는 방식은 제외할 파일 및 폴더를 한줄씩 적어주면 적용이 되는데,
문법은 다음과 같다.
#특정파일 제외 (※모든 경로에 적용!)
[파일명].[확장자]
#특정폴더 제외
[폴더명]/
#특정 경로의 파일제외
[폴더명]/[파일명]
#현재 경로의 특정파일
/[파일명]
#예외처리
![제외하고자 하는 경로 파일]
#확장자 기반 제외
*.[확장자]
3. 문제 발생시 해결
문제가 생길 수 있다.
.gitignore에 적용을 해도 실제로 레포상에서 삭제가 되지 않는 경우가 있는데,
이 경우는 제외목록을 작성하기 전에 이미 커밋을 해버린 경우다.
깃상에서 캐시가 남아있기 때문에 제외되지 않는 상황인데 이때는 강제로 캐시를 날려줘야 한다.
먼저 관련된 스택오버플로우 링크를 하나 첨부한다.https://stackoverflow.com/questions/11451535/gitignore-is-ignored-by-git
git rm -r --cached .
git add .
git commit -m "fixed untracked files"
해당 명령어는 기존에 tracked되어있던 캐시정보를 싹 지우고,
untracked 상태로 만든다음 새로 .gitignore을 참고해서 tracked 할 파일을 저장한다.
그 이후 커밋후 푸쉬를 하면..
다음과 같이 modules폴더와 .env가 사라진 모습을 볼 수 있다.
'개발 이슈,해결법' 카테고리의 다른 글
[iptime] 공유기 외부네트워크에서 원격설정 (1) | 2022.01.02 |
---|---|
[Domain 연결] 스쿨 호스팅 사이트 도메인 구매 및 연결 방법 (0) | 2021.12.26 |
[Git] linux git push 중 "Please use a personal access token instead." (0) | 2021.11.08 |
[mysql] mysql 에서 password 컬럼을 찾을 수 없을 (0) | 2021.10.22 |
PyQt5 QComboBox 예제 (행정구역 선택에 따른 하위 행정구역 선택) (0) | 2021.07.30 |