-
.gitignore에 대해 알아보자.Project/git 2020. 12. 31. 00:10
.gitignore
깃에 올라가면 안 되는 민감한 자료들 있잖아, 그런 파일들을 안 넣을 수도 있는 거고! 또,,, 깃에 넣을 필요가 굳이 없는 애들이 있지. 그런 건 각자 받으면 되는 거지. 뭐 *** 파일이라던지,,, 그런 쓸데없는 것들 - 민규
why?
.gitignore는 불필요한 파일이 git에 올라가는 상황을 방지하기 위해서 사용한다.
프로젝트를 진행하다 보면, Python 가상 환경 폴더(venv), django의 settings.py 등 공유되면 안되는 파일들이 존재한다.
가상 환경 폴더의 경우 각 프로젝트마다 묘듈 & 라이브러리의 버전을 독립적으로 유지하기 위해 사용한다. 또한, 운영체제 마다 가상환경 폴더의 구성이 다르기 때문에 git commit에서 제외시켜주어야 한다.
Django의 settings.py에도 SECRET_KEY가 존재하기 때문에, git에 올라가게 되면 악성 사용자가 서비스의 데이터에 접근할 수 있는 가능성이 굉장히 높아진다. 따라서, 이런 보안 관련 파일들도 제외시켜주어야 한다.
이 외에도, 실제 데이터가 들어있는 데이터 베이스, 로그 파일, 임시파일 등을 제외시켜 주어야 한다.
.gitignore 사용하기
최초에 프로젝트를 시작할 때 생성하는 방법과 프로젝트를 진행하는 도중에 생성하는 방법에 약간의 차이가 있다. 이 차이를 알지 못해 몇 시간 동안 고생했다. 정확히 알아두자!
1. 프로젝트를 시작할 때 생성하는 방법
프로젝트 디렉터리로 이동한 후에, vim 편집기를 사용해 .gitignore파일을 생성한다.
vim .gitignore
아래의 화면이 나타나면 성공이다.
:wq 를 입력해 편집 화면을 종료하자.
폴더 내에 ignore.py와 python.py를 만들어 주었다. ignore.py는 repository에 올라가지 않도록 .gitignore에서 ignore.py 를 추가해보자.
아래와 같이 .gitignore에 추가된 파일은 회색으로 표시되고, 그 외에 수정된 파일들은 초록색으로 표시된다.(VSC기준)
commit 후 실제로 ignore되었는지 확인해보자!
빨간색 박스를 확인해보자.
.gitignore와 python.py가 수정되었음을 알 수 있다.
ignore.py는 commit되지 않았다!
Repository에도 .gitignore와 python.py만 존재하는 것을 확인할 수 있다.
2. 프로젝트를 진행하는 도중에 생성하는 방법
git 사용 도중 .gitignore파일을 만들어 사용하면, 제대로 ignore되지 않는 경우가 발생한다.
오늘 이 문제로 3시간 동안 골머리를 앓았다.
여기 using.py라는 commit 내역이 존재하는 파일이 있다.
.gitignore 파일에 using.py를 추가하고, commit해보자.
분명히 .gitignore파일에 추가해 주었는데 repository에 commit되었다. 왜 이런 현상이 발생하는 것일까?
이유
git repository에 이미 올라와 있는 파일을 .gitignore에 포함시킬 때는, git cache를 삭제해 주어야 한다. commit되던 파일들이 cache에 저장되어 계속 추적되고 있는 상태이기 때문에, .gitignore에 추가해도 적용되지 않고 그대로 commit되어 수정사항이 반영되는 것이다.
cache 삭제
아래의 명령어를 사용해 git cache를 삭제시킬 수 있다.
git rm -r --cached .
삭제 후에 commit을 진행하면, .gitignore가 정상적으로 작동한다.
git add .
git commit - m 'messege'
git push {remote} {branch} (git push origin master)cache가 삭제되고 using.py가 정상적으로 ignore 되었음을 확인할 수 있다!
앞으로는 .gitignore가 작동하지 않더라도 당황하지 말자👍
틀린 부분이 있을 수 있습니다. 피드백 주시면 고치도록 하겠습니다! 감사합니다.
[꼭 다시 풀어보기]
'Project > git' 카테고리의 다른 글
Django - .gitignore활용 (feat. migrations) (0) 2021.01.02