git subtree
๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ถ๊ฐ๋ ์๋ธ ๋ ํฌ๋ฅผ ์์ ํ๋ ค๋ฉด, ๋ช ๊ฐ์ง ์ํฌํ๋ก์ฐ๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค. ์์ ๋ฐฉ๋ฒ์ ๋ถ๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ง์ ์์ ํ๊ฑฐ๋, ์๋ธ ๋ ํฌ์งํ ๋ฆฌ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ํธ์ํ๋ ๋ฐฉ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
git subtree
๋ช ๋ น์ด์์<sub-repo-url>
๋์ remote๋ฅผ ๋ฑ๋กํ์ฌ ๋์ ์ฌ์ฉํ ์ ์๋ค.git remote add <sub-repo-name> <sub-repo-url>
์์ ์์ ์ํ ๋ถ๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์๋ธ ๋ ํฌ๊ฐ ์์นํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํด ํ์ผ์ ์์ ํฉ๋๋ค.
cd <parent-repo>
nano <subdirectory>/<file-to-edit>
๋ณ๊ฒฝ ์ฌํญ ์ปค๋ฐ ์์ ๋ ๋ด์ฉ์ ์ปค๋ฐํฉ๋๋ค. ์ด ์ปค๋ฐ์ ๋ถ๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํ์คํ ๋ฆฌ์ ์ถ๊ฐ๋ฉ๋๋ค.
git add <subdirectory>/<file-to-edit>
git commit -m "Modified file in subtree"
๋ณ๊ฒฝ ์ฌํญ ์๋ธ ๋ ํฌ์งํ ๋ฆฌ์ ํธ์ ๋ถ๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์๋ธ ๋ ํฌ์งํ ๋ฆฌ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ํธ์ํฉ๋๋ค.
git subtree push --prefix=<subdirectory> <sub-repo-url> <branch>
์:
git subtree push --prefix=project1 <https://github.com/username/project1.git> main
์๋ธ ๋ ํฌ์งํ ๋ฆฌ ํด๋ก ์๋ธ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ณ๋๋ก ํด๋ก ํ์ฌ ์์ ์์ ์ ์ํํฉ๋๋ค.
git clone <https://github.com/username/project1.git>
cd project1
์์ ์์ ๋ฐ ํธ์ ์๋ธ ๋ ํฌ์งํ ๋ฆฌ์์ ํ์ํ ์์ ์์ ์ ์ํํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐ ๋ฐ ํธ์ํฉ๋๋ค.
nano <file-to-edit>
git add <file-to-edit>
git commit -m "Updated file in sub-repo"
git push origin main
๋ถ๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์๋ธ ๋ ํฌ ์ ๋ฐ์ดํธ ๋ถ๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์๋ธ ๋ ํฌ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
cd <parent-repo>
git subtree pull --prefix=<subdirectory> <sub-repo-url> <branch> --squash
์:
git subtree pull --prefix=project1 <https://github.com/username/project1.git> main --squash