์๋ธ๋ชจ๋์ด๋?
์๋ธ๋ชจ๋์ ํ๋์ Git ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ ๋ค๋ฅธ Git ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํฌํจ์ํค๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฅผ ํตํด ํฐ ํ๋ก์ ํธ๋ฅผ ์ฌ๋ฌ ๋ ๋ฆฝ์ ์ธ ๋ชจ๋๋ก ๋๋์ด ๊ด๋ฆฌํ๊ฑฐ๋, ์ฌ๋ฌ ํ๋ก์ ํธ์์ ๊ณตํต๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก๋ ๋ฅ๋ฌ๋ ๋ชจ๋ z๋ฅผ ๊ฐ๋ฐํ๋๋ฐ, ์ด ๋ชจ๋์ด ํ๋ก์ ํธ A์ B์ ๋ชจ๋ ์ฌ์ฉ๋์ด ์ด๋ป๊ฒ ๊ด๋ฆฌํ๋ฉด ์ข์๊น ๊ณ ๋ฏผํ๋ค ์๋ธ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ด์. ์ฒ์์๋ ๊ทธ๋ฅ ๋ฅ๋ฌ๋ ๋ชจ๋ z๋ฅผ ํ์ A์ B์ ๋ณต์ฌํด๋์ฑ๋ก ๊นํ์ ๊ด๋ฆฌํ๋๋ฐ... ์ด๋ ๊ฒ ๊ด๋ฆฌํ๋ค๋ณด๋ฉด A์์ z๋ฅผ ์์ ํ๊ณ , B์์๋ z๋ฅผ ์์ ํ๊ณ ... ์๊ฐ์ด ์ง๋๋ฉด ๊ด๋ฆฌ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํด ์ง๋๋ผ๊ตฌ์ ใ ใ . ๋ฌผ๋ก ์ฒ์์ ๋ง์ด๋ํ ์์ ์ด๋ผ ๋์ค์ ๋ค ์ ๋ฆฌํด์ผ์ง~ ํ์ง๋ง ๋ ์ฝ์ง ์์ฃ ใ ใ . ๊ทธ๋์! ์๋ธ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ ๋ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค ~!
์๋ธ๋ชจ๋ ์ฌ์ฉ ์ด์
1. ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ ํฅ์
- ์ฌ๋ฌ ํ๋ก์ ํธ์์ ๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋์ ์ฌ์ฉํ ๋, ํด๋น ๋ชจ๋์ ์๋ธ๋ชจ๋๋ก ํฌํจ์์ผ ์ฝ๋์ ์ค๋ณต ๊ฐ์
- ์ด๋ฅผ ํตํด ์ ์ง๋ณด์์ ์ ๋ฐ์ดํธ๊ฐ ํธ๋ฆฌํด์ง
2. ๋ ๋ฆฝ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ
- ์๋ธ๋ชจ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ์ฌ, ํน์ ํ๋ก์ ํธ์ ๋ง๋ ๋ฒ์ ์ ์ง์ ํ๊ณ ์ฌ์ฉํ ์ ์๋ค
- ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ํ๋ก์ ํธ๊ฐ ์๊ตฌํ๋ ํน์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ ์งํ ์ ์๋ค.
3. ๋ชจ๋ํ๋ ๊ฐ๋ฐ
- ํ๋ก์ ํธ๋ฅผ ๋ชจ๋ํํ์ฌ ๊ฐ ๋ชจ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ํ ์คํธํ ์ ์๋ค.
- ์ด๋ ๊ฐ๋ฐ์ ํจ์จ์ฑ์ ๋์ด๊ณ , ๋ฌธ์ ๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ํด๊ฒฐํ ์ ์๊ฒ ๋์์ค๋ค.
1. ์๋ธ๋ชจ๋์ GitHub์ ์ฌ๋ฆฌ๊ธฐ
์๋ธ๋ชจ๋์ ์ค์ ํ๊ธฐ ์ํด ๋จผ์ ํด๋น ๋ชจ๋์ ๋ ๋ฆฝ์ ์ธ GitHub ์ ์ฅ์๋ก ์์ฑํด์ผ ํด์. ์ด ์์ ์์๋ Goom์ด๋ผ๋ ์๋ธ๋ชจ๋์ ์ค์ ํ ๊ฒ์.
1.1 ์๋ธ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ ์์ฑ
git clone https://github.com/yourusername/Goom.git
cd Goom
- GitHub์์ ์๋ก์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑ (Goom์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑ)
- ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ์ฌ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค์
1.2 ์๋ธ๋ชจ๋์ ํ์ผ ์ถ๊ฐ
git add .
git commit -m "submodule commit"
git branch -M main
git push -u origin main
- ์๋ธ๋ชจ๋์ ํ์ํ ํ์ผ์ ์ถ๊ฐ
- ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํ๊ณ GitHub์ ํธ์
2. ํ๋ก์ ํธ์ ์๋ธ๋ชจ๋ ์ถ๊ฐํ๊ธฐ
์๋ธ๋ชจ๋์ ์ค์ ํ ํ, ์ด๋ฅผ ์ฌ๋ฌ ํ๋ก์ ํธ์ ์ฐ๋ํ ์ ์์ด์. ์๋ฅผ ๋ค์ด, Project_A์ Project_B๋ผ๋ ๋ ๊ฐ์ ํ๋ก์ ํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณผ๊ฒ์.
2.1 Project_A์ Project_B ๊ตฌ์กฐ
Project_A/
โโโ Goom/ (์๋ธ๋ชจ๋)
โ โโโ utils.py
โโโ main.py
Project_B/
โโโ Goom/ (์๋ธ๋ชจ๋)
โ โโโ utils.py
โโโ main.py
- Project_A์ Project_B๋ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋ ๊ฐ์ ํ๋ก์ ํธ๋ก
- ๋ ํ๋ก์ ํธ ๋ชจ๋ ๊ณตํต์ ์ผ๋ก Goom ์๋ธ๋ชจ๋์ ์ฌ์ฉํด์
2.2 ์๋ธ๋ชจ๋ ์ถ๊ฐ ๋ฐ ์ค์
Project_A์ ์๋ธ๋ชจ๋ ์ถ๊ฐ
mkdir Project_A
cd Project_A
git init
git submodule add https://github.com/yourusername/Goom.git Goom
- Goom ํด๋๊ฐ ์๋ธ๋ชจ๋๋ก ์ถ๊ฐ
Project_B์ ์๋ธ๋ชจ๋ ์ถ๊ฐ
mkdir Project_B
cd Project_B
git init
git submodule add https://github.com/yourusername/Goom.git Goom
- Goom ํด๋๊ฐ ์๋ธ๋ชจ๋๋ก ์ถ๊ฐ
3. ์๋ธ๋ชจ๋ ์ฌ์ฉ ๋ฐฉ๋ฒ
์๋ธ๋ชจ๋์ ์ถ๊ฐํ ํ, ํ๋ก์ ํธ์์ ์๋ธ๋ชจ๋์ ํ์ฉํ์ฌ ๊ณตํต๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ด์.
3.1 ์๋ธ๋ชจ๋ ์ด๊ธฐํ ๋ฐ ์ ๋ฐ์ดํธ
์๋ธ๋ชจ๋์ ํด๋ก ํ ํ์๋ ์๋ธ๋ชจ๋์ ์ด๊ธฐํํ๊ณ ์ ๋ฐ์ดํธํฉ๋๋ค:
# Project_A ๋๋ Project_B์์ ์คํ
git submodule update --init --recursive
3.2 ์๋ธ๋ชจ๋์ ๋ณ๊ฒฝ ์ฌํญ ๋ฐ์
์๋ธ๋ชจ๋์์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ๊ฒฝ์ฐ, ๋ค์ ๋จ๊ณ๋ฅผ ํตํด ์ด๋ฅผ ํ๋ก์ ํธ์ ๋ฐ์ํ ์ ์์ด์
์๋ธ๋ชจ๋์์ ์์ ํ ํธ์
cd Goom
# ~~ ์๋ธ๋ชจ๋์ ํ์ผ ์์
git .
git commit -m "Add new operation"
git push -u origin main
์๋ธ๋ชจ๋ ์ ๋ฐ์ดํธ
cd ..
git submodule update --remote Goom
git add Goom
git commit -m "Update Goom submodule to latest commit"
git push -u origin main
์ด์ฒ๋ผ GitHub ์๋ธ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ํ๋ก์ ํธ์์ ๊ณตํต๋ ์ฝ๋๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ด์. ์๋ธ๋ชจ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉด์๋, ํ์ํ ํ๋ก์ ํธ์ ํตํฉํ์ฌ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ ์ ์์ง์.