본문 바로가기
Git

[Git] .env 파일을 gitignore 해야하는 이유!

by SeanK 2021. 12. 13.

 

 

Linux 환경변수에 대해 학습을 하다, 

 

.env 파일은 절대 git push 하시면 안 돼요!라는 설명을 들었다. 

 

왜 그럴까?

 

아, 여기서 .env 파일이란 환경변수들이 저장된 파일을 뜻한다. 

 

이 질문에 대한 답변은 stackOverflow의 형님들께서 친절하게 답변을 해 놓으셨다. 

 

출처: https://stackoverflow.com/questions/43664565/why-do-people-put-the-env-into-gitignore/43664611

 

Why do people put the .env into gitignore?

Laravel's official site recommends that we put the .env into gitignore and so to others. Why? I feel it comes quite handy for future usage once you forget how you setup the configurations.

stackoverflow.com

 

Why do people put the .env into gitignore?

 

.env 파일에는 매우 민감한 정보들이 들어가 있습니다 (가장 덜 민감한 정보로도 app key가 들어있죠). 이 정보를 모든 사람이 볼 수 있는 곳에 올려서 당신의 웹사이트를 공격할 때 사용하도록 이용되길 원하진 않으실 겁니다. 
이메일 키나 패스워드 등이 저장되어 있는 데이터베이스 정보를 생각해보세요. 더욱이 .env 파일에 사용된 정보는 환경에 따라 어차피 바꿔야 하는 정보입니다. 
따라서 대신 어떻게 해야 할까요?
.env.example이란 파일을 만들어서 .env의 키를 모두 넣으세요.

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret​



이렇게 하면 당신의 코드를 사용해야 하는 사람이 필요한 정보는 보여주되 민감한 정보는 포함시키지 않을 수 있습니다. 코드가 필요한 사람은 .env.example을 .env로 값을 바꾸어 사용할 수 있습니다. 


 

 

그렇다면 이번에는 gitignore를 사용하는 방법에 대해 알아보자. 

 

방법은 의외로 쉽다.

 

1. .gitignore 파일을 생성한다. 

2. 무시할 파일 리스트를 작성한다. 

  • * 는 와일드 카드
  • / 로 시작하면 하위 디렉토리에 적용되지 않도록 한다.
  • / 로 끝나면 하위 모든 파일 무시
  • # 는 주석
  • !로 시작하는 패턴의 파일은 무시하지 않는다.

예시)

# Ignore Mac system files
.DS_store

# Ignore node_modules folder
node_modules

# Ignore all text files
*.txt

# Ignore files related to API keys
.env

# Ignore SASS config files
.sass-cache

 

global .gitignore 파일을 추가하거나 변경하고 싶다면 아래의 명령어를 실행하면 된다. 

 

git config --global core.excludesfile ~/.gitignore_global

 

위 명령어를 실행하면 ~/.gitignore_global 파일이 생성된다. 이 파일에 .gitignore와 마찬가지로 작성하면, 모든 git repository는 이 파일을 무시하게 된다.