๋ชฉ์ฐจ (OPEN)
.gitignore๋
.gitignore๋ Git์์ ํน์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฒ์ ๊ด๋ฆฌ์์ ์ ์ธํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ค์ ํ์ผ์ด๋ค.
์ด ํ์ผ์ ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์์นํ๋ฉฐ, ๋ฌด์ํ์ ํ๋ ํ์ผ์ด๋ ํด๋์ ๊ฒฝ๋ก๋ ํจํด์ ์ ์ํ ์ ์๋ค.
Git์์ .gitignore์ ์ญํ
Git์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ ํธ์ ๋ชจ๋ ํ์ผ์ ์ถ์ ํ๋ ค๊ณ ํ๋ค.
ํ์ง๋ง ์ถ์ ์ด ๋ถํ์ํ๊ฑฐ๋ ์ํ์ง ์๋ ํ์ผ๊น์ง ํฌํจ๋๋ฉด ์๋์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋ถํ์ํ ํ์ผ ์ถ์ โ ๏ธ
๋น๋ ๊ฒฐ๊ณผ๋ฌผ (*.class, *.jar)์ด๋ ์บ์ ํ์ผ (*.log, .DS_Store) ๋ฑ์ ๋ฒ์ ๊ด๋ฆฌ์์ ์ ์ธํ๋ ๊ฒ์ด ์ข๋ค.
(ํ์ ์ ์ฌ์์ฑ ๊ฐ๋ฅํ๊ณ , ๋ ํฌ์งํ ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋ถํ์ํ๊ฒ ์ฆ๊ฐ์ํค๋ฉฐ, ํ์ ์ ์ถฉ๋์ ์ ๋ฐํ ์ ์๊ธฐ ๋๋ฌธ) - ๋ฏผ๊ฐ ์ ๋ณด ์ ์ถ ๐
API ํค, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋น๋ฐ๋ฒํธ ๋ฑ์ด ํฌํจ๋ ์ค์ ํ์ผ (.env, application.properties)์ด ์๋ชป ์ถ์ ๋๋ฉด ๋ณด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. - ํ์
์ ํผ๋ ๐คฏ
IDE ๊ด๋ จ ํ์ผ (.idea/, *.iml)์ด๋ OS์์ ์์ฑํ๋ ๋ฉํ ๋ฐ์ดํฐ (thumbs.db, .DS_Store)๋ ํ์ ์ค ๋ถํ์ํ ์ปค๋ฐ ์ถฉ๋์ ์ ๋ฐํ ์ ์๋ค.
๐ .gitignore๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด, ํน์ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๋ฅผ Git์ด ์ถ์ ํ์ง ์๋๋ก ์ค์ ํ๋ ์ญํ ์ ํ๋ ๊ฒ์ด๋ค.
.gitignore ํ์ผ ์์ฑํ๊ธฐ
ํฐ๋ฏธ๋์์ ์ง์ ์์ฑํ๋ ๋ฐฉ๋ฒ
ํฐ๋ฏธ๋์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ ์์ฑํ๋ฉด ๋๋ค.
touch .gitignore
์์ฑ๋ .gitignore ํ์ผ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์์นํ๊ฒ ๋๋ค.
IntelliJ IDEA์์ ์ง์ ์์ฑํ๋ ๋ฐฉ๋ฒ
ํ์ผ > ์๋ก ๋ง๋ค๊ธฐ > ํ์ผ์ ํด๋ฆญํ ๋ค, ํ์ผ ์ด๋ฆ์ .gitignore๋ก ์ ๋ ฅํ๋ฉด ๋๋ค.
๋ง์ฝ Intellij IDEA๊ฐ Git๊ณผ ์ฐ๋๋ ํ๋ก์ ํธ๋ผ๋ฉด, ์๋์ผ๋ก .gitignore ํ์ผ์ ๊ฐ์งํด์ค๋ค.
์๋ ์์ฑ ์ฌ์ดํธ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ (gitignore.io)
gitignore.io๋ ํ๋ก์ ํธ์ ํ์ํ .gitignore ํ์ผ์ ์๋์ผ๋ก ์์ฑํด ์ฃผ๋ ๋ฌด๋ฃ ์น ์๋น์ค์ด๋ค.
gitignore.io
Create useful .gitignore files for your project
www.toptal.com
์์ ์ฌ์ดํธ๋ก ์ด๋ํด์ ์ฌ์ฉ ์ค์ธ ๊ธฐ์ ์คํ์ ์ ๋ ฅํ ํ, ์์ฑ ๋ฒํผ์ ํด๋ฆญํ๋ฉด .gitignore ํ์ผ ๋ด์ฉ์ด ์์ฑ๋๋ค.
.gitignore ๋ฌธ๋ฒ ์ดํดํ๊ธฐ
์ฃผ์
#๋ก ์์ํ๋ ์ค์ ์ฃผ์์ผ๋ก ๊ฐ์ฃผ๋์ด .gitignore ํ์ผ์ ์ค๋ช ์ ์ถ๊ฐํ ๋ ์ ์ฉํ๋ค.
# ๋น๋ ๊ฒฐ๊ณผ๋ฌผ ๋ฌด์
*.class
ํน์ ํ์ผ / ๋๋ ํ ๋ฆฌ ๋ฌด์ํ๊ธฐ
ํน์ ํ์ผ ์ด๋ฆ์ ์์ฑํ๋ฉด ํด๋น ํ์ผ์ด Git์์ ๋ฌด์๋๋ค.
# log ํ์ผ ๋ฌด์
debug.log
# ํน์ ์ค์ ํ์ผ ๋ฌด์
application.properties
๋๋ ํ ๋ฆฌ ์ด๋ฆ ๋ค์ / ๋ฅผ ๋ถ์ด๋ฉด ํด๋น ๋๋ ํ ๋ฆฌ์ ๋ด๋ถ ๋ชจ๋ ํ์ผ์ด ๋ฌด์๋๋ค.
# ๋น๋ ๋๋ ํ ๋ฆฌ ๋ฌด์
build/
# IntelliJ ์ค์ ๋๋ ํ ๋ฆฌ ๋ฌด์
.idea/
๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ํฌํจํ์ฌ ํน์ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ๋ฌด์ํ ์ ์๋ค.
# src/main/log ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ํ์ผ ๋ฌด์
src/main/log/
ํจํด ๋งค์นญ
์์ผ๋์นด๋ (*)๋ ๋ชจ๋ ๋ฌธ์์ ์ผ์นํ๋ค.
# ๋ชจ๋ .log ํ์ผ ๋ฌด์
*.log
# ๋ชจ๋ tmp ํ์ผ ๋ฌด์
*.tmp
** ๋ ์ค์ฒฉ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ๊ฒฝ๋ก์์ ์ผ์นํ๋ค.
# ์ด๋ค ์์น์ ์์ด๋ tmp ๋๋ ํ ๋ฆฌ ๋ฌด์
**/tmp/
! ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌด์ ๊ท์น์์ ํน์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ ์ธํ ์ ์๋ค.
# ๋ชจ๋ log ํ์ผ ๋ฌด์
*.log
# exception.log๋ ๋ฌด์ํ์ง ์์
!exception.log
/ ๋ ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ๋ ์ฌ์ฉํ๋ค.
# ํ๋ก์ ํธ ๋ฃจํธ์ ์๋ node_modules ๋๋ ํ ๋ฆฌ๋ง ๋ฌด์
/node_modules/
# src/ ๋๋ ํ ๋ฆฌ ์๋์ ๋ชจ๋ ํ์ผ ๋ฌด์
src/
.gitignore ์ ์ฉ ๋ฐฉ๋ฒ
์ด๋ฏธ ์ปค๋ฐ๋ ํ์ผ์ .gitignore ์ ์ฉํ๊ธฐ
.gitignore๋ Git์ด ์์ง ์ถ์ ํ์ง ์์ ํ์ผ์๋ง ์ ์ฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฏธ Git์ ์ปค๋ฐ๋ ํ์ผ์ .gitignore์ ์ถ๊ฐํด๋ ์๋์ผ๋ก ๋ฌด์๋์ง ์๋๋ค.
์ด๋ด ๋ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
1๏ธโฃ .gitignore ํ์ผ์ ์ถ๊ฐํ ๋ด์ฉ์ ์์ฑํ๋ค.
# ์์
build/
*.log
2๏ธโฃ Git ์บ์์์ ํ์ผ์ ์ ๊ฑฐํ๋ค.
git rm -r --cached <ํ์ผ๋ช
๋๋ ๋๋ ํ ๋ฆฌ>
# ์์๋ก build/ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฌด์ํ๋ ค๋ฉด
git rm -r --cached build/
3๏ธโฃ ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐํ๋ค.
git add .
git commit -m "Apply .gitignore to existing files"
๊ธ๋ก๋ฒ .gitignore ์ค์ ํ๊ธฐ
๊ธ๋ก๋ฒ .gitignore๋ ํน์ ํ๋ก์ ํธ๊ฐ ์๋๋ผ ๋ชจ๋ Git ํ๋ก์ ํธ์ ๋ํด ์ ์ฉ๋๋ ๊ฒ์ด๋ค.
OS ๋ณ ์บ์ ํ์ผ, ๊ฐ๋ฐ ํ๊ฒฝ ๊ด๋ จ ํ์ผ ๋ฑ ํ๋ก์ ํธ์ ๋ฌด๊ดํ ํ์ผ์ ๋ฌด์ํ๊ณ ์ ํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
์ด๋ ์๋์ ๋ฐฉ๋ฒ์ผ๋ก ์ค์ ํ ์ ์๋ค.
1๏ธโฃ ๊ธ๋ก๋ฒ .gitignore ํ์ผ ์์ฑ
# ํ ๋๋ ํ ๋ฆฌ์ .gitignore_global ํ์ผ ์์ฑ
touch ~/.gitignore_global
2๏ธโฃ ๊ธ๋ก๋ฒ .gitignore ์ค์
# Git ์ค์ ์ .gitignore_global ํ์ผ ์ถ๊ฐ
git config --global core.excludesfile ~/.gitignore_global
3๏ธโฃ ๊ธ๋ก๋ฒ .gitignore์ ๋ด์ฉ ์ถ๊ฐ
# macOS
.DS_Store
._*
# Windows
Thumbs.db
Desktop.ini
# IDE
.idea/
*.iml
4๏ธโฃ ์ค์ ํ์ธ
# ๊ธ๋ก๋ฒ .gitignore ์ค์ ์ด ์ ์ฉ๋์๋์ง ํ์ธ
git config --global core.excludesfile
.gitignore ๊ด๋ จ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
.gitignore ํ์ผ์ด ๋์ํ์ง ์์ ๋
.gitignore ํ์ผ์ด ๋์ํ์ง ์์ ๋๋ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
1๏ธโฃ ์ด๋ฏธ ์ถ์ ์ค์ธ ํ์ผ์ธ์ง ํ์ธํ๋ค.
.gitignore๋ Git์ด ์ถ์ ํ์ง ์๋ ํ์ผ์๋ง ์ ์ฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฏธ Git์์ ์ถ์ ์ค์ธ ํ์ผ์ .gitignore์ ์ถ๊ฐํด๋ ๋ฌด์๋์ง ์๋๋ค.
"์ด๋ฏธ ์ปค๋ฐ๋ ํ์ผ์ .gitignore ์ ์ฉํ๊ธฐ"๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
2๏ธโฃ .gitignore ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ํ์ธํ๋ค.
.gitignore ํ์ผ์ ํ๋ก์ ํธ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์์ด์ผ ํ๋ค.
๋ฌด์ํ๋ ค๋ ํ์ผ์ด ๋ค๋ฅธ ํ์ ๋๋ ํ ๋ฆฌ์ ์๋ค๋ฉด, ์ ํํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋์ง ํ์ธํด์ผ ํ๋ค.
# ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์๋ logs ํด๋ ๋ฌด์
logs/
# src ๋๋ ํ ๋ฆฌ ์์ logs ํด๋ ๋ฌด์
src/logs/
3๏ธโฃ ํจํด ๋ฌธ๋ฒ์ ํ์ธํ๋ค.
์์ ๋ ์ ์ฐจ๋ฅผ ์งํํ์์๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์๋ค๋ฉด, .gitignore์ ํจํด ๋ฌธ๋ฒ์ด ์ฌ๋ฐ๋ฅธ์ง ๋ค์ ํ ๋ฒ ํ์ธํด๋ด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด *.log๋ ๋ชจ๋ .log ํ์ผ์ ๋ฌด์ํ์ง๋ง, *.log/ ์ฒ๋ผ ์๋ชป๋ ๋ฌธ๋ฒ์ ์๋ํ์ง ์๋๋ค.
์์ฃผ ๋ฐ์ํ๋ ์ค์๋ก๋ ๋ฌด์ํ ๋๋ ํ ๋ฆฌ ๋ค์ / ๋ฅผ ๋น ๋จ๋ฆฌ๋ ๊ฒ์ด ์์ผ๋ฏ๋ก ๊ผผ๊ผผํ ํ์ธํด๋ด์ผ ํ๋ค.
(์ด๋์ ๊ทธ๋ฅ gitignore.io๋ฅผ ์ฌ์ฉํ๋๊ฒ ํธํฉ๋๋ค ..)
4๏ธโฃ Git ์บ์๋ฅผ ๊ฐฑ์ ํ๋ค.
.gitignore๋ฅผ ์์ ํ ํ์ ์บ์๊ฐ ๊ฐฑ์ ๋์ง ์์๋ค๋ฉด, .gitignore ๊ท์น์ด ์ ์ฉ๋์ง ์์ ์ ์์ผ๋ฏ๋ก ์บ์๋ฅผ ๊ฐฑ์ ํด์ค๋ค.
git rm -r --cached .
git add .
git commit -m "Refresh .gitignore rules"
๊ฒฐ๋ก
.gitignore๋ ๋จ์ํ ์ค์ ํ์ผ์ด์ง๋ง, ์ ํ์ฉํ๋ฉด ํ๋ก์ ํธ์ ๊ด๋ฆฌ ํจ์จ์ฑ์ด ํฌ๊ฒ ํฅ์๋๋ค.
ํญ์ ํ์ํ ํ์ผ๋ง ๊น๋ํ๊ฒ ์ถ์ ํ๋๋ก ์ค์ ํ๊ณ , ๋ฏผ๊ฐ ์ ๋ณด ์ ์ถ์ด๋ ํ์
์ค ์ถฉ๋์ ์ฌ์ ์ ๋ฐฉ์งํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
'๐ป Git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Git] Merge์ Squash and Merge์ ์ฐจ์ด์ (0) | 2025.05.14 |
---|