Git์ผ๋ก ํ์ ํ๋ฉด์ ๋ค์๋ ์๊ฐ๋ค์ ํ๋ฒ ์ ๋ฆฌ ํด๋ณด์์ต๋๋ค.
์ด๊ฒ์ ๊ฐ๋ฐ์๋ง๋ค ์๊ฒฌ์ด ๊ฐ๋ฆฌ๋ ๋ถ๋ถ์
๋๋ค. git rebase ์ค์ ์ ์ธ์งํ์ง ๋ชปํ๊ณ ์ฌ์ฉํ๋ค๋ณด๋ฉด
๊ฐํน ์์
๋ฌผ์ ๋ ๋ฆด์๋ ์๊ณ , ์ถฉ๋์ ํด๊ฒฐํ๋ ๊ฒ์ด ์ฝ์ง ์์ ์๋ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ง์ merge๋ git graph๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ค์ด Git ํ์คํ ๋ฆฌ๋ฅผ ํ์
ํ๊ธฐ ํ๋ค๊ฒ ํฉ๋๋ค. Git์ ์ฌ์ฉํ๋ ๋ชฉ์ ์ ํ์คํ ๋ฆฌ ๊ด๋ฆฌ์
๋๋ค. ๊ทธ๋์ ๋๋๋ก rebase๋ฅผ ์ ํธํฉ๋๋ค.
์ผ์ ์ด ๋น ๋ฏํ์ฌ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ๊ฐ์ ๋ด์ฉ์ ์์
์ ์ฌ๋ฌ ์ปค๋ฐ์ผ๋ก ๋๋ ๋๊ฐ ์์ต๋๋ค.
ํ ์ฌ์ดํด ๋ด์์ ์ด๋ฃจ์ด์ง๋ ์์
์ด๋ผ๋ฉด ๋๋๋ก ์์
๋ด์ฉ๊ณผ ์ปค๋ฐ์ด 1๋1๋ก ๋์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ๋ง ์ด๊ฒ์ด ๊ทธํ ๋ก ์ค์ํ ๊น? ๋ผ๊ณ ์๊ฐ์ ํ ์๋ ์์ต๋๋ค. ์ ๋ํ ๊ณผ๊ฑฐ์ ๊ทธ๋ฌ๊ธฐ ๋๋ฌธ์
๋๋ค.
์๋น์ค์ ๊ท๋ชจ๋ ์ ์ฐจ ์ฑ์ฅํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์ฝ๋์ ์๋ ๋ง์ด์ง๋๋ค.
๊ทธ๋ ๊ธฐ์ ์๊ฐ์ด ์ง๋ ์๋ก ์ด ๊ท์น์ ์ค์ํด์ง๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๊ท์น๋๋ก ์ปค๋ฐ์ ํ๋ค๋ณด๋ฉด ์์ฐ์ค๋ ๊ฐ๊ฐ์ ์ปค๋ฐ์ ์๋ฏธ๋ฅผ ์ง๋๊ฒ ๋ฉ๋๋ค.
๋จผ์ ์์
๋ด์ฉ์ ๊ณํํ๊ณ ๊ฐ๊ฐ์ ์์
์ด ์ปค๋ฐ์ผ๋ก ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ๋ผ ์์
๋จ์๋ก ์ปค๋ฐ์ ํ์๋๋ฐ ์ด์ ์ ์์
๋ด์ฉ์ ๋ณ๊ฒฝํด์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํ ์ ์์๊น์?
Stacked PR ๋๋ Stacked branch ๋ผ๋ ๊ฐ๋
์ ๋ค์ด๋ณด์
จ์ ์๋ ์์ต๋๋ค.
์์
์ ๋จ์๋ฅผ ๋ธ๋์น๋ก ๋๋๋ ์ด์ ์์
๋ธ๋์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ์์
๋ธ๋์น๋ฅผ ๋ง๋๋ ์ ๋ต์
๋๋ค.
์ด ์ ๋ต์ ์ด์ ์์
๋ธ๋์น๊ฐ ๋ณ๊ฒฝ๋๋ค๋ฉด ๋ค๋ฅธ ์์
๋ธ๋์น๋ค์ ์์ฐจ์ ์ผ๋ก rebase ํด์ผํฉ๋๋ค.
๋ ํธ๋ฆฌํ๊ฒ ์ด ์ ๋ต์ ์ฐ๊ณ ์ ํ๋ค๋ฉด Graphite๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ gt cli๋ฅผ ํตํด ์คํ ๋ธ๋์น๋ค์ ์์ฝ๊ฒ ๋ง๋ค ์ ์๊ณ , ํน์ ์์
๋ธ๋์น๊ฐ ๋ณ๊ฒฝ์ด ์๊ธฐ๋ฉด
์๋์ผ๋ก ๊ทธ์ ์ฐ๊ฒฐ๋์ด ์๋ ์์
๋ธ๋์น๋ค์ rebase ํฉ๋๋ค.
๋ค๋ง gt cli์ ๋ช
๋ น์ด๋ค์ ์ตํ์ผํ๋ ๋จ์ ์ด ์์ต๋๋ค.
GitButler์ ์๋ก์ด ์ ๋ต์ ์ ์ํฉ๋๋ค.
ํ๋์ ๋ธ๋์น์์ ์ฌ๋ฌ๊ฐ์ ์์
์ ๋์์ ์งํํ๊ณ ๊ฐ ์์
๋ด์ฉ์ ๊ฐ์ ๋ธ๋์น๋ผ๋ ๊ณณ์ ์ฌ๋ฆด ์ ์์ต๋๋ค.
๊ฐ๊ฐ์ ๊ฐ์ ๋ธ๋์น๋ ์ถํ ์ค์ ๋ธ๋์น๋ก ๋ง๋ค ์ ์๊ณ ์ต์ข
์ ์ผ๋ก ๋ฉ์ธ ๋ธ๋์น์ ๋ณํฉ ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์คํ์ผ ๋ณ๊ฒฝ ์์
๊ณผ ๋น์ฆ๋์ค ๋ก์ง ๋ณ๊ฒฝ์์
์ ๋ณํํ๋ค ํ์๋
์คํ์ผ ์์
์ ํ๋ค๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ์์ ํ๋ ๊ฒ์ ์ด๋ ต์ง ์์ต๋๋ค.
๊ฐ ์์
์ปค๋ฐ์ ๋ชฉ์ ์ ๋ง๊ฒ ๊ฐ์ ๋ธ๋์น๋ก ์ฎ๊ธฐ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ ๋ธ๋์น ๋ด์์๋ ๋์ผํ ์์
์ด ์ฌ๋ฌ ์ปค๋ฐ์ผ๋ก ๋๋์ด์ ธ ์๋ค๋ฉด
์์ฝ๊ฒ squash๋ ๊ฐ๋ฅํ์ฌ ๋ถํ์ํ ์ปค๋ฐ์ ์์จ ์ ๋ ์์ต๋๋ค.
๋ง๋ค์ด์ง์ง ์ผ๋ง๋์ง ์์ ์์ง ๋ฒ๊ทธ๊ฐ ๋ง์ด ์กด์ฌํ์ง๋ง
๋๊ตฌ๊ฐ ์ข ๋ ์ฑ์ํด ์ง๋ค๋ฉด GitButler๋ฅผ ์ด์ฉํด ์์
ํด ๋ณผ ๊ณํ์
๋๋ค.
์์ํ๊ฒ Git์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ผ๋ก ๊ด๋ฆฌํ๋ ์ ๋ต์
๋๋ค. ์ปค๋ฐ ๋ช
๋ น์ด๋ฅผ ์ํ์ --fixup ์ด๋ผ๋ ์ต์
์ ํตํด ํน์ ์ปค๋ฐ์ ์ฐ๊ฒฐ ํ ์ ์๊ณ rebase๋ฅผ ํตํด ์๋์ผ๋ก ์ปค๋ฐ์ด ํฉ์ณ์ง ์ ์๊ฒํ์ฌ ์์
๊ณผ ์ปค๋ฐ์ด 1๋1์ด ๋๋๋ก ํ ์ ์์ต๋๋ค.
# ํน์ ์ปค๋ฐ๊ณผ ํด๋น ์ปค๋ฐ์ ์ฐ๊ฒฐํฉ๋๋ค. ์๋์ผ๋ก ์ปค๋ฐ ๋ฉ์ธ์ง ์์ fixup! ๋ฌธ์์ด์ ๋ฃ์ต๋๋ค.
git commit -a -m 'change comment' --fixup=<์ด์ ์ฃผ์์ ๋ณ๊ฒฝํ ์ปค๋ฐ ํด์>
# autosquash ์ต์
์ rebase ์์ fixup! ์ด๋ผ๋ ๋ฉ์ธ์ง๊ฐ ์กด์ฌํ๋ ์ปค๋ฐ์ ์ฐ๊ฒฐ๋ ์ปค๋ฐ๊ณผ ์๋์ผ๋ก ํฉ์นฉ๋๋ค.
git rebase --autosquash <base ์ปค๋ฐ ํด์>