git subtree
๋ Git์์ **ํ์ ๋ฆฌํฌ์งํ ๋ฆฌ(sub-repository)**๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์
๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋๋ ํ ๋ฆฌ ๋ด์ ๋ ๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ด์ฉ์ ํฌํจ์ํฌ ์ ์์ผ๋ฉฐ, ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. git submodule
๊ณผ ๋น๊ต๋๋ ๊ธฐ๋ฅ์ผ๋ก, ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋จํ๊ฒ ํ๋ ค๋ ๋ชฉ์ ์ผ๋ก ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
๋ถ๋ชจ ์ ์ฅ์์๋ ๊ทธ๋ฅ ๋ถ๋ชจ/์์ ๊ตฌ๋ถ ์๋ ๋ฉ์ด๋ฆฐ๋ฐ, ์์ ์ ์ฅ์์๋ ์๊ฒฉ ์ ์ฅ์๊ฐ ๋ฐ๋ก ์๋ ๋๋
๋ถ๋ชจ(๋ด ์ ์ฅ์) ์ ์ฅ:
โ ํ์ ํด๋์ ์ฝ๋๊ฐ ๋ค์ด์ ์์ ๋ฟ, ๋ฑํ โ๋ถ๋ชจ/์์โ ๊ตฌ์กฐ๋ก ์์ํ ํ์ ์์ด ๊ทธ๋ฅ ์๊ธฐ ์ ์ฅ์์ ์ผ๋ถ์ฒ๋ผ ์ฌ์ฉํจ.
์์(์ธ๋ถ ์ ์ฅ์) ์ ์ฅ:
โ ๋ถ๋ชจ ์ ์ฅ์์์ ๋ด(์์) ์ ์ฅ์์ ์๊ฒฉ ์ฃผ์์ ๋ธ๋์น๋ฅผ ๋ฐ๋ก ๋ฑ๋กํด๋๊ณ , ํ์ํ ๋๋ง subtree ๋ช ๋ น์ผ๋ก โ๋๊ธฐํโํ๊ฑฐ๋ ๋ณ๊ฒฝ ๋ด์ญ์ pushํ์ฌ ์๋ฐฉํฅ ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํจ.
[๋ด ๋ก์ปฌ ์ ์ฅ์] โโ [subtree/] (์ธ๋ถ ๋ ํฌ์ ์ฝ๋์ ์ปค๋ฐ์ด๋ ฅ ํต์งธ๋ก ๋ค์ด์ด) [๋ด ๋ก์ปฌ ์ ์ฅ์] [subtree/] โ โ git pull/push git subtree pull/push โ โ [๋ด ์๊ฒฉ ์ ์ฅ์] [์ธ๋ถ(์ ์คํธ๋ฆผ) ์๊ฒฉ ์ ์ฅ์]
subtree
๋ ํน์ ๋๋ ํ ๋ฆฌ ์๋์ ๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ด์ฉ์ ๊ฐ์ ธ์ค๊ณ , ์ด๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.subtree
๋ก ์ถ๊ฐ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ปค๋ฐ ๋ด์ญ์ ๋ถ๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํตํฉ๋ฉ๋๋ค.-squash
์ต์
์ผ๋ก ์๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ปค๋ฐ์ ๋จ์ผ ์ปค๋ฐ์ผ๋ก ๋ณํฉํ ์๋ ์์ต๋๋ค.๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ถ๊ฐํฉ๋๋ค.
git subtree add --prefix=<directory> <repository-url> <branch> [--squash]
--prefix=<directory>
: ์๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํฌํจํ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก.<repository-url>
: ์๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๊ฒฉ URL.<branch>
: ์๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๊ฐ์ ธ์ฌ ๋ธ๋์น.--squash
: ์๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ชจ๋ ์ปค๋ฐ์ ๋จ์ผ ์ปค๋ฐ์ผ๋ก ๋ณํฉ.์๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ด์ฉ์ ์ต์ ์ํ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
git subtree pull --prefix=<directory> <repository-url> <branch> [--squash]