๐ก ๋ณธ ๋ฌธ์๋ 'gitignore ํน์ ํ์ผ๋๋ ํด๋ ์ ์ธ/๋ฌด์ํ๊ธฐ'์ ๋ํด ์ ๋ฆฌํด๋์ ๊ธ์ ๋๋ค.
Git์ ํ๊ฒ ๋๋ฉด ๋ด๊ฐ ์์ ํ๋ ๊ณต๊ฐ์๋ ํ์ํ์ง๋ง remote(์๊ฒฉ)์ push๋ฅผ ๋ฌด์ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค(๋์ฒด๋ก ์ฉ๋์ด ํฐ ๊ฒฝ์ฐ ๊ทธ๋ฌํ๋ค). ์ด๋ฐ ๊ฒฝ์ฐ๋ ์์ค ํ์ผ์ด๋ผ๋๊ฐ ์ฌ๋ฆฌ๋ฉด ์ถฉ๋์ด ์ผ์ด๋ ์ค๋ฅ๋ฅผ ๋ฒํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ด๋ จ ๋ด์ฉ์ ๋ํด ์ ๋ฆฌํ์์ผ๋ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
1. .gitignore ํ์ผ ์์ฑ
ํน์ ํ์ผ์ด๋ ํด๋์ push๋ฅผ ๋ง๊ธฐ ์ํด์๋ ๋์ฒด๋ก .gitignore ํ์ผ์ ๋ง๋ค์ด ์ค๋๋ค.
์๋ฅผ ๋ค์ด test.txtํ์ผ๊ณผ test ํด๋๋ฅผ ignore ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด, ๋ฌด์ํ ํ์ผ๋ฐ ํด๋๋ ์๋์ ๊ฐ์ด ์์ฑํด ์ค๋๋ค.
## ํ์ผ ๋ฌด์
test.txt
## ๋ค์๊ณผ ๊ฐ์ ํ์ฅ์๋ ์ ์ฒด ๋ฌด์
*.text
*.exe
*.zip
## ํด๋ ๋ฌด์
test/
ํด๋์ ๊ฐ์ ๊ฒฝ์ฐ ๋ฌด์ํ๋ ํด๋ ํ์์ ํ์ผ์ด๋ ํด๋ ๋ํ ignore(๋ฌด์) ๋ฉ๋๋ค.
์ถ๊ฐ๋ก, .gitignore ํ์ผ์์ # ๋ค์ ์ฐ๋ ๋ด์ฉ์ ์ฃผ์์ฒ๋ฆฌ ๋ฉ๋๋ค.
.gitignore ํ์ผ์ ์์ฑ ํ์๋ค๋ฉด, add > commit > push ๊น์ง ํด์ผ ignore ๊ฐ ์ ์ฉ ๋ฉ๋๋ค.
$ git add .
$ git commit -m "ignore file&folder config"
$ git push origin master
2. gitignore.io : ๊ฐ๋ฐํ๊ฒฝ์ ๋ง๋ .gitignore ํ์ผ ์์ฑ
์ฌ์ค ์์์ ์ธ๊ธํ .gitignore ๋ฌธ๋ฒ๋ง ์๋ฉด ๋ฌธ์ ๋ ์์ต๋๋ค. ํ์ง๋ง ๊ฐ๋ฐํ๊ฒฝ์ ๋ง๋ ์บ์ํ์ผ์ด๋ ๋น๋ ํด๋์ ๊ฒฝ์ฐ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๊ฐ gitignore ํ์ผ์ ์์ฑํด์ผ ํ๊ธฐ์ ์ด๋ฅผ ์์ฑํด์ฃผ๋ ํด์ด ์์ด์ ์๊ฐํ๋ ค ํฉ๋๋ค.
์์ ์ ์ด์์ฒด์ , ๊ฐ๋ฐํ๊ฒฝ, ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ,(comma)๋ก ๊ตฌ๋ถํ์ฌ ์ ์ ํ ์์ฑ ๋ฒํผ์ ๋๋ฅด๋ฉด, ํ๊ฒฝ์ ๋ง๋ .gitignore ํ์ผ์ ์๋์ ์์ฑํด์ค๋๋ค.
# ์ฃผ์์ฌํญ
1. ๊ธฐ์กด ์ ๊ด๋ฆฌํ๊ณ ์๋(commit๋ ๊ฒ๋ค) ์บ์ ์ญ์ ํ๊ธฐ
๊ธฐ์กด์ git์ ๊ด๋ฆฌ๋ฅผ ๋ฐ๊ณ ์๋(commit๋ ๊ฒ๋ค) ํ์ผ์ด๋ ํด๋๋ฅผ .gitignore ํ์ผ์ ์์ฑํ๊ณ add > commit > push ํ์ฌ๋ ignore(๋ฌด์) ๋์ง ์์ต๋๋ค.
์ด๋ด๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด์ ๊ฐ์ง๊ณ ์๋ cached๋ฅผ ์ง์์ผ ํฉ๋๋ค.
## ํ์ผ ์ด๋ผ๋ฉด
git rm --cached test.txt
## ์ ์ฒดํ์ผ ์ด๋ผ๋ฉด
git rm --cached *.txt
## ํด๋ ๋ผ๋ฉด
git rm --cached test/ -r
git rm --cache ๋ช
๋ น์ด๋ Staging Area(add ๋ฅผ ํ๊ณ ๋์์ ์์ญ)์์ ํ์ผ์ ์ ๊ฑฐํ๊ณ working directory(Local)์์๋ ํ์ผ์ ์ ์งํ๋ ๋ช
๋ น์ด์
๋๋ค.
์์ ๋ช
๋ น์ด๋ฅผ ์คํํ ํ ๊ผญ commit์ ํด์ค์ผ ํฉ๋๋ค.
2. ๊ธฐ์กด์ ๊ด๋ฆฌํ๊ณ ์๋(commit๋ ๊ฒ๋ค) ํ์ผ ๋ฌด์ํ๊ธฐ
๊ธฐ์กด์ ๊ด๋ฆฌํ๊ณ ์๋(commit๋ ๊ฒ๋ค) ํ์ผ์ cached ๋ช ๋ น์ด๋ฅผ ์์ฐ๊ณ ๋ฌด์ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$ git update-index --assume-unchanged [ํ์ผ๋ช
]
๋ค์๊ณผ ๊ฐ์ด ๋ฌด์๋ฅผ ์ ์ธํ๊ณ ๋ค์ ์ทจ์ํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค.
$ git update-index --no-assume-unchanged [ํ์ผ๋ช
]
์์ ์ฌํญ ๋ฌด์ ํ์ผ ์กฐํ๋ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
$ git ls-files -v|grep '^h'
์ฐธ๊ณ
- [Blog] git ignore ํน์ ํ์ผ๋๋ ํด๋ ์ ์ธ or ๋ฌด์ํ๊ธฐ: https://kcmschool.com/194
- [Toptal] gitignore.io: https://www.toptal.com/developers/gitignore