Skip to content

๐Ÿ› ๏ธ Submodule ๋ฐ Parent Repository ๊ด€๋ฆฌ ์›Œํฌํ”Œ๋กœ์šฐย #3

@eajnoeyeel

Description

@eajnoeyeel

๐Ÿ‘ฉโ€๐Ÿ’ป Submodule ์ž‘์—… ํ”„๋กœ์„ธ์Šค

  1. ์ž‘์—… ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ์ž‘์—… ์‹œ์ž‘

    git checkout -b feature/<your-feature-name>
  2. ์ฝ”๋“œ ์ž‘์—… ๋ฐ ์ปค๋ฐ‹
    ์ž‘์—…ํ•œ ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค:

    git add .
    git commit -m "feat: Add <your-feature-description>"
  3. Remote main ๋ธŒ๋žœ์น˜๋กœ Merge
    ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด main ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜์—ฌ Mergeํ•ฉ๋‹ˆ๋‹ค:

    git checkout main
    git merge feature/<your-feature-name>
    git push origin main
  4. Submodule ์ƒํƒœ ํ™•์ธ
    ๋ณ€๊ฒฝ๋œ Submodule ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด:

    git log --oneline

๐Ÿ“‚ Parent Repository์—์„œ Submodule ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค

  1. Submodule์˜ ์ตœ์‹  ์ƒํƒœ ์—…๋ฐ์ดํŠธ
    Parent Repository์˜ develop ๋ธŒ๋žœ์น˜์—์„œ Submodule์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค:

    git submodule update --remote --merge

    ๐Ÿ” Note: ์ด ๋ช…๋ น์–ด๋Š” .gitmodules์— ์„ค์ •๋œ Submodule์˜ main ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

  2. Submodule ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ปค๋ฐ‹
    ๋ณ€๊ฒฝ๋œ Submodule์„ Parent Repository์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค:

    git add srcs/<submodule>
    git commit -m "chore: Update <submodule-name> to latest main"
    git push origin develop
  3. Parent Repository์˜ develop โ†’ main Merge
    ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด Parent Repository์˜ main ๋ธŒ๋žœ์น˜๋กœ Mergeํ•ฉ๋‹ˆ๋‹ค:

    git checkout main
    git merge develop
    git push origin main

๐Ÿ› ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

  1. Submodule ์ƒํƒœ ํ™•์ธ

    • Submodule์ด ์˜ฌ๋ฐ”๋ฅธ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด:
      git submodule status
  2. Submodule ์ถฉ๋Œ ๋ฐœ์ƒ ์‹œ

    • Submodule์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ์ง์ ‘ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค:
      cd srcs/<submodule>
      git pull origin main
  3. Submodule ๋ธŒ๋žœ์น˜

    • ๋ชจ๋“  Submodule์€ ๋ฐ˜๋“œ์‹œ main ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.
    • .gitmodules์— ์„ค์ •๋œ ๋ธŒ๋žœ์น˜(branch = main)๋ฅผ ํ™•์ธํ•˜์„ธ์š”:
      [submodule "srcs/<submodule>"]
        path = srcs/<submodule>
        url = <submodule-url>
        branch = main
  4. ํŒ€์› ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

    • Submodule ์ž‘์—…์„ Parent Repository๋กœ ํ†ตํ•ฉํ•˜๊ธฐ ์ „, ์ž‘์—… ๋ธŒ๋žœ์น˜๋ฅผ ๋ฐ˜๋“œ์‹œ Submodule์˜ main์œผ๋กœ Mergeํ•˜๊ณ  Pushํ•˜์„ธ์š”.

๐Ÿ“œ ์›Œํฌํ”Œ๋กœ์šฐ ์š”์•ฝ

  1. ํŒ€์›: Submodule ์ž‘์—… ํ›„ main ๋ธŒ๋žœ์น˜๋กœ Merge ๋ฐ Push.
  2. Parent Repository ๊ด€๋ฆฌ์ž:
    • Submodule ์ตœ์‹  ์ƒํƒœ ์—…๋ฐ์ดํŠธ (git submodule update --remote --merge).
    • Submodule ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ปค๋ฐ‹ ๋ฐ Parent Repository develop โ†’ main Merge.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions