Hello Kitty Eyes Shut
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป Git

[Git] .gitignore ์™„๋ฒฝ ๊ฐ€์ด๋“œ

๋ฐ˜์‘ํ˜•
๋ชฉ์ฐจ (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 ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ์ฃผ๋Š” ๋ฌด๋ฃŒ ์›น ์„œ๋น„์Šค์ด๋‹ค.

 

http://gitignore.io

 

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