gitmodules

.gitmodules

Git ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ค๋ฅธ Git ์ €์žฅ์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ์„œ๋ธŒ๋ชจ๋“ˆ ๊ธฐ๋Šฅ์€, ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ๋…๋ฆฝ ๋ชจ๋“ˆ์„ ๋ณ„๋„์˜ ์ด๋ ฅ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด์„œ๋„ ์ƒ์œ„ ํ”„๋กœ์ ํŠธ์™€ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ์ด๋•Œ, .gitmodules ํŒŒ์ผ์€ ์„œ๋ธŒ๋ชจ๋“ˆ์˜ ๊ฒฝ๋กœ, ์›๊ฒฉ ์ €์žฅ์†Œ URL, ๊ทธ๋ฆฌ๊ณ  (์˜ต์…˜์œผ๋กœ) ์ถ”์ ํ•  ๋ธŒ๋žœ์น˜ ๋“ฑ ์ •๋ณด๋ฅผ ์„ค์ •ํ•ด ๋‘๋Š” ์ค‘์š”ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.


๊ธฐ๋ณธ ๊ตฌ์„ฑ

์„œ๋ธŒ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•˜๋ฉด Git์€ ์ž๋™์œผ๋กœ .gitmodules ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

[submodule "libs/somelib"]
    path = libs/somelib
    url = https://github.com/user/somelib.git
  • ์„น์…˜ ์ด๋ฆ„: [submodule "libs/somelib"]๋Š” ์„œ๋ธŒ๋ชจ๋“ˆ ์ด๋ฆ„์ด๋‚˜ ๊ฒฝ๋กœ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ž„์˜๋กœ ์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ณดํ†ต ์„œ๋ธŒ๋ชจ๋“ˆ์ด ์œ„์น˜ํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

  • path: ์‹ค์ œ ์„œ๋ธŒ๋ชจ๋“ˆ์ด ์ฒดํฌ์•„์›ƒ ๋  ๋กœ์ปฌ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • url: ์„œ๋ธŒ๋ชจ๋“ˆ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ด URL์„ ํ†ตํ•ด Git์€ ํ•ด๋‹น ์ €์žฅ์†Œ๋ฅผ ํด๋ก ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ํŠน์ • ๋ธŒ๋žœ์น˜๋ฅผ ์ถ”์ ํ•˜๋„๋ก ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

[submodule "libs/somelib"]
    path = libs/somelib
    url = https://github.com/user/somelib.git
    branch = main

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด git submodule update --remote ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์ง€์ •ํ•œ ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์„œ๋ธŒ๋ชจ๋“ˆ์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.


์„œ๋ธŒ๋ชจ๋“ˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ

์„œ๋ธŒ๋ชจ๋“ˆ ๋‚ด๋ถ€์—์„œ ํŒŒ์ผ ์ˆ˜์ • ํ›„ ์ปค๋ฐ‹, ํ‘ธ์‹œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ํ•ด๋‹น ์„œ๋ธŒ๋ชจ๋“ˆ ์ €์žฅ์†Œ๋Š” ์ตœ์‹  ์ƒํƒœ๋กœ ๊ฐฑ์‹ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ƒ์œ„(๋ฉ”์ธ) ์ €์žฅ์†Œ๋Š” ์„œ๋ธŒ๋ชจ๋“ˆ์˜ ์ปค๋ฐ‹ ํฌ์ธํ„ฐ๋งŒ์„ ๊ธฐ๋กํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‚ด๋ถ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋œ ์ƒˆ ์ปค๋ฐ‹ ํ•ด์‹œ๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋ธŒ๋ชจ๋“ˆ ๋ณ€๊ฒฝ ํ›„ ์ƒ์œ„ ์ €์žฅ์†Œ์— ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‹ค์‹œ add ๋ฐ ์ปค๋ฐ‹ํ•ด์•ผ, ๋‹ค๋ฅธ ํ˜‘์—…์ž๋“ค๋„ ์ตœ์‹  ์ƒํƒœ์˜ ์„œ๋ธŒ๋ชจ๋“ˆ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋ธŒ๋ชจ๋“ˆ ๋‚ด์—์„œ ์—…๋ฐ์ดํŠธ ํ›„ ์ƒ์œ„ ์ €์žฅ์†Œ์—์„œ ๋ฐ˜์˜ํ•˜๋Š” ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

# ์„œ๋ธŒ๋ชจ๋“ˆ ๋‚ด๋ถ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ commit & push
cd libs/somelib
git add .
git commit -m "์„œ๋ธŒ๋ชจ๋“ˆ์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€"
git push origin main

# ์ƒ์œ„ ์ €์žฅ์†Œ๋กœ ๋Œ์•„์™€ ์„œ๋ธŒ๋ชจ๋“ˆ ํฌ์ธํ„ฐ ์—…๋ฐ์ดํŠธ ๋ฐ˜์˜
cd ..
git add libs/somelib
git commit -m "Update submodule libs/somelib pointer to latest commit"
git push origin main

๋˜ํ•œ, ์ƒ์œ„ ์ €์žฅ์†Œ์—์„œ git submodule update --remote ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด .gitmodules์— ์ง€์ •ํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„œ๋ธŒ๋ชจ๋“ˆ์„ ์ผ๊ด„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํŒ

  • ํ†ต์ผ๋œ ์„œ๋ธŒ๋ชจ๋“ˆ ์ •๋ณด ๊ณต์œ : .gitmodules ํŒŒ์ผ์€ ์ƒ์œ„ ์ €์žฅ์†Œ์— ํฌํ•จ๋˜๋ฏ€๋กœ, ๋ชจ๋“  ํŒ€์›์ด ๋™์ผํ•œ ์„œ๋ธŒ๋ชจ๋“ˆ ๊ฒฝ๋กœ์™€ URL์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ์ž ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฒฝ๋กœ๋ฅผ ์ž˜๋ชป ์ง€์ •ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„œ๋ธŒ๋ชจ๋“ˆ ๋ณ€๊ฒฝ ์‹œ ์ฃผ์˜: ์„œ๋ธŒ๋ชจ๋“ˆ์˜ ์—…๋ฐ์ดํŠธ๋Š” ๋‹จ์ˆœํžˆ ๋‚ด๋ถ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ˜์˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ƒ์œ„ ์ €์žฅ์†Œ์˜ ์ปค๋ฐ‹ ํฌ์ธํ„ฐ ๋ณ€๊ฒฝ๊นŒ์ง€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์„œ๋ธŒ๋ชจ๋“ˆ ์—…๋ฐ์ดํŠธ ํ›„ ๋ฐ˜๋“œ์‹œ ์ƒ์œ„ ์ €์žฅ์†Œ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•˜์—ฌ ๋™๊ธฐํ™”๋ฅผ ๋งž์ถฐ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์„œ๋ธŒ๋ชจ๋“ˆ ์‚ญ์ œ/์ด๋™: ์„œ๋ธŒ๋ชจ๋“ˆ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์ด๋™ํ•  ๋•Œ๋Š” .gitmodules ํŒŒ์ผ๋ฟ ์•„๋‹ˆ๋ผ, Git ๋‚ด๋ถ€ ์บ์‹œ(.git/config ๋‚ด ์„œ๋ธŒ๋ชจ๋“ˆ ๊ด€๋ จ ์„ค์ •)๊นŒ์ง€ ์ •๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


.gitmodules ํŒŒ์ผ์€ Git ์„œ๋ธŒ๋ชจ๋“ˆ ๊ด€๋ฆฌ์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ, ์™ธ๋ถ€ ์ €์žฅ์†Œ์™€ ์ƒ์œ„ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์— ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ๋กœ์™€ URL, ์„ ํƒ์ ์œผ๋กœ ์ถ”์ ํ•  ๋ธŒ๋žœ์น˜๋ฅผ ์ง€์ •ํ•ด๋‘๋ฉด, ํ”„๋กœ์ ํŠธ๋ฅผ ํด๋ก ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์„œ๋ธŒ๋ชจ๋“ˆ์˜ ์ƒํƒœ๋ฅผ ์†์‰ฝ๊ฒŒ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ธŒ๋ชจ๋“ˆ ๊ด€๋ฆฌ์— ์ต์ˆ™ํ•ด์ง€๋ฉด, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ๊ณต์šฉ ๋ชจ๋“ˆ์ด๋‚˜ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๋”์šฑ ๋ช…ํ™•ํ•ด์ง€๊ณ , ํ˜‘์—… ๊ณผ์ •์—์„œ์˜ ํ˜ผ๋ž€์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Last updated