.gitignore์ ๋ฃ์๋๋ฐ ๊ณ์ ์ฌ๋ผ๊ฐ ๋: Git ์ถ์ ์ํ๋ฅผ ํ์ธํ๋ ์์
.env๋ ๋ก๊ทธ ํ์ผ์ .gitignore์ ์ ์๋๋ฐ Git ๋ณ๊ฒฝ ๋ชฉ๋ก์ ๊ณ์ ๋ํ๋๋ฉด ๊ท์น์ด ๊ณ ์ฅ ๋ฌ๋ค๊ณ ์๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ผ์ด ์ด๋ฏธ ์ถ์ ๋์์ด๋ฉด ๋ฌด์ ๊ท์น๋ง ์ถ๊ฐํด๋ ๊ทธ ์ํ๊ฐ ์ฌ๋ผ์ง์ง ์์ต๋๋ค. ๋จผ์ ํ์ผ์ด ์ถ์ ์ค์ธ์ง, ์์ง ์ถ๊ฐ๋์ง ์์ ํ์ผ์ธ์ง ๊ตฌ๋ถํด์ผ ํฉ๋๋ค.
์ด ๊ธ์ ์ค์ ๋น๋ฐ ๊ฐ์ ์ฐ์ง ์๊ณ DEMO=not-a-secret์ด๋ผ๋ ๊ฐ์ ๋ด์ฉ์ ์ฌ์ฉํฉ๋๋ค. ๋น ์ฐ์ต ์ ์ฅ์์์ ํ์ผ์ ์ถ์ ํ ๋ค์ ๋ฌด์ ๊ท์น์ ์ถ๊ฐํ๊ณ , ๋ก์ปฌ ํ์ผ์ ๋ณด์กดํ๋ฉด์ ์ถ์ ๋์์์ ๋นผ ๋ด ๋๋ค. ์๊ฒฉ ์ ์ฅ์์ ํธ์ํ์ง ์์๋ ์ฐจ์ด๋ฅผ ์ฌํํ ์ ์์ต๋๋ค.
2. ์ธ ์ํ๋ฅผ ๋๋์ด ๋ณด๋ฉด ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค
์์ ํด๋์๋ ํ์ผ์ด ์กด์ฌํ ์ ์๊ณ , Git์ ์ธ๋ฑ์ค์๋ ๋ค์ ์ปค๋ฐ์ ํฌํจํ ์ํ๊ฐ ๊ธฐ๋ก๋ ์ ์์ต๋๋ค. ๊ธฐ์กด ์ปค๋ฐ ๊ธฐ๋ก์๋ ๊ณผ๊ฑฐ ํ์ผ ๋ด์ฉ์ด ๋จ์ ์์ ์ ์์ต๋๋ค. ํ๋์ ๋ช ๋ น์ด ์ด ์ธ ์์น๋ฅผ ๋ชจ๋ ์ง์ด๋ค๊ณ ์๊ฐํ๋ฉด ์ค์ํ๊ธฐ ์ฝ์ต๋๋ค.
.gitignore๋ ์์ง ์ถ์ ํ์ง ์๋ ํ์ผ์ ํฌํจ์ ๋ง๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค. git rm --cached๋ ์ง์ ํ ํ์ผ์ ์ธ๋ฑ์ค์์ ์ ๊ฑฐํ๊ณ ์์ ํด๋์ ํ์ผ์ ๋จ๊น๋๋ค. ์ด ์ํ๋ฅผ ์ปค๋ฐํด๋ ๊ธฐ์กด ์ปค๋ฐ ์์ ๋ด์ฉ๊น์ง ์ฌ๋ผ์ง๋ ๊ฒ์ ์๋๋๋ค. ์ด์ ํ๋ก์ ํธ๋ฅผ ์์ ํ๊ธฐ ์ ์ ํ์ฌ ์ํ์ ๋ฐฑ์ ์ ํ์ธํ๋ ์ด์ ์ ๋๋ค.
3. ๋จผ์ ์ด๋ค ๊ท์น์ด ์ ์ฉ๋๋์ง ํ์ธํฉ๋๋ค
git status --short๋ก ํ์ฌ ๋ณ๊ฒฝ์ ํ์ธํ๊ณ git ls-files๋ก ์ถ์ ๋ชฉ๋ก์ ์ดํด๋ด ๋๋ค. ๋ฌด์ ๋์์ด ์์ง ์ถ์ ๋์ง ์์๋ค๋ฉด git check-ignore -v๋ก ์ ์ฉ๋ ๊ท์น ์์น๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๊ท์น ํ์ผ์ด ํ๋ก์ ํธ ๋ฃจํธ์ธ์ง ํ์ ํด๋์ธ์ง์ ๋ฐ๋ผ์ ๊ฒฝ๋ก ํด์์ด ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
์ด๋ฏธ ์ถ์ ํ ํ์ผ์ ๋ํด check-ignore ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด ๋ฌด์ ๊ท์น์ด ๋ฐ๋์ ํ๋ ธ๋ค๋ ๋ป์ ์๋๋๋ค. ์ด๋๋ ls-files ๊ฒฐ๊ณผ๋ฅผ ์ฐ์ ๋์กฐํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ๊ณต๋ฐฑ์ด ์์ผ๋ฉด ๋ช ๋ น์์ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํ์ธ์. ์ด์ ํ๊ฒฝ์ ์ค์ ์ธ์ฆ ๊ฐ์ด๋ ์ค์ ๋ด์ฉ์ ์ง๋จ ํ๋ฉด์ ๋ถ์ฌ ๋ฃ์ง ์์๋ ๋ฉ๋๋ค.
4. ์ ์ฐ์ต ํด๋์์ ์ต์ ์ฌ๋ก๋ฅผ ๋ง๋ญ๋๋ค
Windows ๋ช ๋ น ํ๋กฌํํธ์์ ๋ค์ ์์๋ฅผ ์คํํฉ๋๋ค. ๊ฐ์ ์ด๋ฆ์ ํด๋๊ฐ ์ด๋ฏธ ์์ผ๋ฉด ๋ค๋ฅธ ์ ํด๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. git add๋ ์ธ๋ฑ์ค์ ์ถ๊ฐํ๋ ๋ช ๋ น์ด๋ฏ๋ก ์ค์ต์๋ ์ปค๋ฐ ์์ฑ์ ์ค์ ์ด๋ ์๊ฒฉ ์ฃผ์๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์์ ๋ ์ค์ .env๋ฅผ ๋ฎ์ด์ฐ์ง ์๋๋ก ์ ํด๋์์ ์งํํด์ผ ํฉ๋๋ค.
ํต์ฌ ๋น๊ต๋ .gitignore๋ฅผ ๋ง๋ ์งํ์๋ ls-files์ .env๊ฐ ๋์จ๋ค๋ ์ ์ ๋๋ค. ๋ค์์ --cached ์ต์ ์ผ๋ก ํ์ผ๋ง ์ถ์ ์์ ์ ๊ฑฐํฉ๋๋ค. ์ด ์ต์ ์ ๋นผ๊ณ ์คํํ๋ ๊ฒ๊ณผ ๊ตฌ๋ถํ์ธ์. ๋ง์ง๋ง์๋ ํด๋ ์์ .env๊ฐ ๋จ์ ์๋์ง ์ง์ ํ์ธํฉ๋๋ค. ์๋ฏธ๋ฅผ ์ดํดํ ๋ค ์ด์ ์ ์ฅ์์ ์ ์ฉํ๋ ํธ์ด ์์ ํฉ๋๋ค.
5. ํ๋ก์ ํธ์ ์ ์ฉํ ๋๋ ํ์ผ ๋จ์๋ก ์ฒ๋ฆฌํฉ๋๋ค
์ธํฐ๋ท ์์ ์๋ ์ ์ฒด ์ธ๋ฑ์ค๋ฅผ ์ง์ ๋ค๊ฐ ๋ค์ ์ถ๊ฐํ๋ ๋ช ๋ น์ด ์์ฃผ ๋ฑ์ฅํฉ๋๋ค. ํ์ง๋ง ํ์ฌ ์์ ์ค์ธ ๋ณ๊ฒฝ๊ณผ ๋ถํ์ํ ํ์ผ์ ํ๊บผ๋ฒ์ ๊ฑด๋๋ฆด ์ ์์ผ๋ฏ๋ก ๋ฌธ์ ํ์ผ์ ์ง์ ํ๋ ์์ ๋ณ๊ฒฝ๋ถํฐ ๊ฒํ ํ์ธ์. ๋ช ๋ น์ ์คํํ ๋ค์๋ git diff --cached๋ก ์ปค๋ฐ์ ๋ค์ด๊ฐ ๋ณ๊ฒฝ์ ํ์ธํฉ๋๋ค.
์๋ํ ํ์ผ ์ญ์ ๊ธฐ๋ก๊ณผ .gitignore ์ถ๊ฐ๋ง ํฌํจ๋๋์ง ์ดํด๋ด ๋๋ค. ๋ค๋ฅธ ๊ฐ๋ฐ์์ ๋ณ๊ฒฝ์ด๋ ์๋ ์์ฑ ํ์ผ์ด ์์ฌ ์์ผ๋ฉด ๊ณง๋ฐ๋ก ์ปค๋ฐํ์ง ๋ง๊ณ ์ํ๋ฅผ ์ ๋ฆฌํ์ธ์. ๋ก์ปฌ ํ์ผ์ ๋ณด์กดํ๋ค๋ ์ฌ์ค๊ณผ ์ ์ฅ์ ๊ธฐ๋ก์์ ์ ์ธ๋๋ค๋ ์ฌ์ค์ ๊ฐ๊ฐ ํ์ธํ๋ฉด ๋ณ๊ฒฝ์ ๋ฒ์๋ฅผ ๋ถ๋ช ํ ์ค๋ช ํ ์ ์์ต๋๋ค.
6. ์ด๋ฏธ ๋น๋ฐ ๊ฐ์ด ์ฌ๋ผ๊ฐ๋ค๋ฉด ๋ณ๋ ๋ฌธ์ ์ ๋๋ค
์ถ์ ์ ํด์ ํ๋ ์์ ์ ์์ผ๋ก์ ํฌํจ์ ์ค์ผ ๋ฟ, ๊ณต๊ฐ๋ ์ธ์ฆ ๊ฐ์ ๋น๊ณต๊ฐ๋ก ๋๋๋ฆฌ์ง ์์ต๋๋ค. ์ค์ ํค๊ฐ ๋ ธ์ถ๋ ๊ฒฝ์ฐ ํด๋น ์๋น์ค์์ ํค ํ๊ธฐ์ ๊ต์ฒด๋ฅผ ์ฐ์ ๊ฒํ ํด์ผ ํฉ๋๋ค. ๊ณผ๊ฑฐ ๊ธฐ๋ก ์ ๋ฆฌ๋ ์ ์ฅ์๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ์ฌ๋์๊ฒ ์ํฅ์ ์ค ์ ์์ผ๋ฏ๋ก ๋ณ๋ ์ ์ฐจ๋ก ๋ค๋ฃน๋๋ค.
์ด ๊ธ์ ๊ธฐ๋ก ์ฌ์์ฑ์ด๋ ๊ฐ์ ํธ์๋ฅผ ์๋ดํ์ง ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๋ ํ๋จ๋ ํ์ฌ ๋ณ๊ฒฝ ๋ชฉ๋ก๋ง ๋ณด๊ณ ํ์ง ๋ง์ธ์. ๊ธฐ๋ก, ์๊ฒฉ ์ ์ฅ์, ๋ฐฐํฌ ํ๊ฒฝ์ ์ด๋ค ๊ฐ์ด ๋ค์ด๊ฐ๋์ง ๋ฐ๋ก ํ์ธํด์ผ ํฉ๋๋ค. ์ฐ์ต์ฉ ํ์ผ๋ก ๋ฌด์ ๊ท์น์ ์ดํดํ ๋ค ํ๋ก์ ํธ์ ์ ์ฑ ์ ๋ง๊ฒ ์ ์ฉํ์ธ์.
7. ๋ณ๊ฒฝ ๊ฒํ ๋ฅผ ์ํ ์์ ์ฐ์ต ์๋๋ฆฌ์ค
์ฐ์ต ํด๋์์ .env ์ธ์ app.py์ notes.txt๋ ๋ง๋ ๋ค ์ํ๋ฅผ ๋น๊ตํด ๋ณด์ธ์. app.py๋ ์ผ๋ฐ ์ฝ๋ ํ์ผ์ด๊ณ .env๋ ๋ฌด์ ๋์์ ๋๋ค. ๋ ํ์ผ์ ๋์์ ์ถ๊ฐํ๋ค๋ฉด ์ถ์ ํด์ ๋ช ๋ น์ .env์๋ง ์ ์ฉํ๊ณ app.py์ ์ํ๋ ๊ทธ๋๋ก์ธ์ง ํ์ธํฉ๋๋ค. ์ ์ฒด ํ์ผ์ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌํ๋ ๊ฒ๋ณด๋ค ๋ณํ์ ์๋ฏธ๊ฐ ์ ๋๋ฌ๋ฉ๋๋ค.
๊ท์น์ .env๋ฅผ ์ ๋ ๊ฒฝ์ฐ์ ํน์ ํ์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ๊ฒฝ์ฐ๋ ๋ค๋ฅธ ์ ํด๋์์ ์ํํ ์ ์์ต๋๋ค. ๊ฐ์ ์ด๋ฆ์ ํ์ผ์ด ์ฌ๋ฌ ์์น์ ์์ผ๋ฉด ์ด๋ค ํจํด์ด ์ ์ฉ๋๋์ง check-ignore ์ถ๋ ฅ์ผ๋ก ํ์ธํฉ๋๋ค. ํ๋ก์ ํธ์ ์ค์ ์ค์ ์ ๋ง๊ฒ ์ ํํด์ผ ํ๋ฉฐ ํจํด ํ๋๊ฐ ๋ชจ๋ ์ํฉ์ ์ ๋ต์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ์ํ๋ ํ์ผ์ด ํฌํจ๋๋์ง๋ณด๋ค ์ ์ธํด์ผ ํ ํ์ผ์ด ๋จ์๋์ง๋ ์ดํด๋ด ๋๋ค.
์์ ์ด ๋๋๋ฉด ํ์ฌ ์ถ์ ๋ชฉ๋ก, ์คํ ์ด์ง ๋ณ๊ฒฝ๊ณผ ๋ก์ปฌ ํ์ผ ์กด์ฌ๋ฅผ ๊ฐ๊ฐ ๊ธฐ๋กํฉ๋๋ค. ์ด ์ธ ๊ฒฐ๊ณผ๊ฐ ์๋์ ๋ง๋์ง ํ์ธํ ๋ค ์ด์ ์ ์ฅ์์ ์ ์ฉํ์ธ์. ์์ ํด๋์๋ ๋จ๊ธฐ๋ ์ ์ฅ์์์๋ ๋นผ๋ ค๋ ์ค์ ํ์ผ๊ณผ, ์ค์ ๋ก ์ญ์ ํ๋ ค๋ ๋ถํ์ ํ์ผ์ ์๋ก ๋ค๋ฅธ ์์ ์ ๋๋ค. ์ด๋ฆ์ด ๋น์ทํ๋ค๊ณ ๊ฐ์ ๋ช ๋ น์ ๋ฐ๋ณตํ์ง ์์ต๋๋ค.
๊ณต๋ ์์ ์ ์ฅ์์์๋ ๋ณ๊ฒฝ ์ด์ ๋ฅผ ๊ฐ๋จํ ์ค๋ช ํ๋ ๊ฒ์ด ๋์์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ฐ์๋ง๋ค ๋ค๋ฅธ ๋ก์ปฌ ์ค์ ํ์ผ์ ์ ์ธํ๊ณ , ํ์ํ ํ์์ ์ค์ ๊ฐ ์๋ ์์ ํ์ผ๋ก ์ ๊ณตํ ์ ์์ต๋๋ค. ์์ ํ์ผ์ ๋ชฉ์ ์ ๋ค๋ฅธ ์ฌ๋์ด ์ด๋ค ๊ฐ์ ์ค๋นํด์ผ ํ๋์ง ์๊ฒ ํ๋ ๊ฒ์ด์ง ์ค์ ์ธ์ฆ ๊ฐ์ ๋ณต์ฌ๋ณธ์ ๋ฐฐํฌํ๋ ๊ฒ์ด ์๋๋๋ค. ์์กดํ๋ ๋ฐฐํฌ ๊ณผ์ ๋ ํ์ธํ์ธ์.
๋๋๋ฆด ๋๋ ํ์ฌ ์์ ์ด ์ปค๋ฐ ์ ์ธ์ง ํ์ธ์ง๋ถํฐ ๊ตฌ๋ถํฉ๋๋ค. ์ด ๊ธ์ ์ต์ ์ค์ต์ ์ปค๋ฐ ์ ์ธ๋ฑ์ค ์ํ๋ง ๋ค๋ฃน๋๋ค. ์ด๋ฏธ ํธ์ํ ๊ณต๋ ๊ธฐ๋ก์ ๋ฐ๊พธ๋ ์์ ์ ๋ณ๋ ์ํฅ์ด ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๋ช ๋ น์ ํ๋ํ์ง ๋ง์ธ์. ์ต๊ทผ ๋ณ๊ฒฝ์ ํ์ธํ ๊ฒฐ๊ณผ๋ฅผ ๊ทผ๊ฑฐ๋ก ์ฒ๋ฆฌํ๋ฉด ๋น๋ฐ ๊ฐ ๋์๊ณผ ๋ฌด์ ๊ท์น ์ ๋ฆฌ๋ฅผ ํผ๋ํ์ง ์์ ์ ์์ต๋๋ค.
8. ๋ฐ๋ผ ํ๋ ์์
๋ช ๋ น๊ณผ ์ฝ๋๋ ํ์ต์ฉ์ ๋๋ค. ์ค๋ช ์ ํ์๋ ์คํ ํ๊ฒฝ์ ๊ตฌ๋ถํ๊ณ ์ ์ํ ํด๋ ๋๋ ๋ชจ์ ์ ๋ ฅ์ผ๋ก ์์ํ์ธ์.
์์ ์ฝ๋
mkdir git-ignore-demo
cd git-ignore-demo
git init
echo DEMO=not-a-secret>.env
git add .env
echo .env>.gitignore
git ls-files -- .env
git rm --cached -- .env
git check-ignore -v .env
git status --short
type .env9. ๊ฒ์ฆ ๊ฒฐ๊ณผ์ ํด์
| ํ์ธ ํญ๋ชฉ | ๊ฒฐ๊ณผ ๋๋ ๊ฒ์ฆ ๋ฒ์ |
|---|---|
| ๋ฌด์ ๊ท์น ์ถ๊ฐ ์งํ | .env๊ฐ ์ถ์ ๋ชฉ๋ก์ ๋จ์ |
| git rm --cached ์ดํ | .env๊ฐ ๋ฌด์ ๋์ |
| ๋ก์ปฌ ํ์ผ | ์กด์ฌํจ |
| ์๊ฒฉ ์์ | ์คํํ์ง ์์ |
๊ฒฉ๋ฆฌ๋ ์์ Git ์ ์ฅ์์์ ์ถ์ ์ถ๊ฐ, ๋ฌด์ ๊ท์น ์ถ๊ฐ, ์ถ์ ํด์ ์ ๋ก์ปฌ ํ์ผ ๋ณด์กด์ ํ์ธํ์ต๋๋ค. ๋ณธ๋ฌธ์ ํ์ผ ์์ฑ ๋ช ๋ น์ Windows CMD์ฉ์ด๋ฉฐ ๋์ผ ์ ์ฐจ์ Git ๋์์ Linux์์ ๊ฒ์ฆํ์ต๋๋ค.
10. ์์ฃผ ๋ฌป๋ ์ง๋ฌธ
git rm --cached๊ฐ ๋ด ํ์ผ์ ์ง์ฐ๋์?
์ง์ ํ ํ์ผ์ ์ธ๋ฑ์ค์์ ์ ๊ฑฐํ๊ณ ๋ก์ปฌ ์์ ํ์ผ์ ์ ์งํ๋ ์ต์ ์ ๋๋ค. ๋ช ๋ น ์คํ ํ ํ์ผ๊ณผ ์คํ ์ด์ง ๋ณ๊ฒฝ์ ํจ๊ป ํ์ธํ์ธ์.
์ด์ ๊ณผ๊ฑฐ ๊ธฐ๋ก์์๋ ์์ด์ก๋์?
์๋๋๋ค. ๊ณผ๊ฑฐ ์ปค๋ฐ์ ๋ด์ฉ์ ๋ณ๋์ ๋๋ค. ๋น๋ฐ ๋ ธ์ถ ๋์๊ณผ ํ์ฌ ์ถ์ ํด์ ๋ฅผ ๊ฐ์ ์์ ์ผ๋ก ์ทจ๊ธํ์ง ๋ง์ธ์.
์ check-ignore๊ฐ ์๋ฌด๊ฒ๋ ์ ๋ณด์ฌ ์ฃผ๋์?
์ด๋ฏธ ์ถ์ ์ค์ผ ์ ์์ต๋๋ค. ๋จผ์ ls-files๋ก ์ถ์ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ๊ท์น ๊ฒฝ๋ก์ ํจํด๋ ๋์กฐํ์ธ์.
11. ๊ณต์ ์ฐธ๊ณ ์๋ฃ
๋์ ์ ์์ ์ต์ ์ ์๋ ์ ์์ ๋ฌธ์์์ ํ์ธํ ์ ์์ต๋๋ค. ๋ณธ๋ฌธ์ ์ฌ๋ก์ ์์ ๋ ํ์ต์ ์ํด ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ์ฑํ์ต๋๋ค.
์์ ์ ๋ ฅ์ ํ์ต์ฉ ๋ชจ์ ์๋ฃ์ ๋๋ค. ์ค์ ํ๊ฒฝ์ ์ ์ฉํ ๋๋ ๋ณธ๋ฌธ์ ์๋ดํ ๊ฒ์ฆ ๋ฒ์์ ์กฐ๊ฑด์ ํ์ธํ์ธ์.
๐ฌ ๋๊ธ 0๊ฐ