[Git] merge
์ด๋ฒ ํฌ์คํธ์์๋ git merge์ ๋ํด์ ๋ค๋ค๋ณด๊ฒ ๋ค.
merge๋ ๋ง ๊ทธ๋๋ก ๋ณํฉ์ ํ๋ ๊ธฐ๋ฅ์ด๋ค.
๋ธ๋์น๋ผ๋ฆฌ ํฉ์ณ์ค๋ค.
๊ธฐ๋ณธ merge
๊ทธ๋์ ์ด๊ฒ ์ ํ์ํ๊ฑธ๊น?
git์ผ๋ก ์์ ์ ํ๋ค๋ณด๋ฉด, ๊ธฐ๋ฅ๋ณ๋ก ๋๋๊ธฐ ์ํด์๋ , ๋ถ์ ์ ํ๊ธฐ ์ํด์๋ , ๋ฐฐํฌ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ , ์๋ฌดํผ ๋ธ๋์น๋ฅผ ์ชผ๊ฐ์ ๊ฐ๋ฐ์ ํ๊ฒ ๋๋ค.
๋ง์ฝ master๋ฅผ ๊ธฐ๋ณธ ๋ฐฐํฌ ๋ธ๋์น๋ก ํ๊ณ develop์ ๊ฐ๋ฐ์ฉ ๋ธ๋์น๋ก ํ๋ค๋ฉด,
develop์ผ๋ก ๋จผ์ ์์
์ ํด์ ์ด๋์ ๋ ์์
์ด ์์ฑ๋๊ณ ๋ ๋ค์์, develop์ ์์
์ฌํญ์ master์ ํตํฉํด์ผ ํ๋ ์์ผ๋ก ์งํ์ด ๋๋ค.
๊ทธ๋ผ ์ด๋ฐ์์ผ๋ก develop์ commit์ ํ๋ค๊ฐ

์ด๋ ๊ฒ merge๋ก master์ ํฉ์ณ์ฃผ๋ฉด ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ๋ง ๋๋ฉด ์ฐธ ์ข๊ฒ ์ง๋ง... ํ์ค์ ๊ทธ๋ ์ง ์๋ค.
merge conflict
์์ ๊ฒฝ์ฐ์๋ ๊น๋ํ๊ฒ ๋ง๋ฌผ๋ ค์๋ ๊ตฌ์กฐ๋ผ์ Fast-forward๋ก ๋ฐ๋ก ์งํต merge๊ฐ ์ฑ๊ณตํ๋๋ฐ, ๋ฌธ์ ๋... ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๋ง์ฝ ๋ณํฉํ๋ 2๊ฐ์ ๋ธ๋์น๊ฐ ํ๋์ ์์คํ์ผ์ ๋ํด์ ๊ฐ๊ฐ ์์ ์ ํ๋ค๋ฉด, ์ด๋๋์ ๋ฐ์ํด์ค์ผ ํ๊ฒ ๋?
์ด๊ฒ ์์ฐ์ค๋ฝ๊ฒ ๊ฒน์ณ์ง๋ค๋ฉด git์ด ์์์ ํด๊ฒฐ์ ํด์ฃผ๊ธฐ๋ ํ๋๋ฐ, ๊ทธ๋ ์ง ์๋ค๋ฉด ์ถฉ๋์ ์ง์ ํด๊ฒฐํด์ผ ํ๋ค.
ํ๋ฒ ์ํฉ์ ์ฌํํด๋ณด๊ฒ ๋ค.
master์์๋ ์ ๋ ๊ฒ ์์ ์ ํ๊ณ


develop์์๋ ์ด๋ ๊ฒ ์์ ์ ํ๋ค.


์ด ์ํฉ์์ merge๋ฅผ ํ๋ค๋ฉด, ๋ฌด์กฐ๊ฑด ์ถฉ๋์ด ๋ฐ์ํ๋ค.
๊ทธ๋ ๊ทธ๋ด๊ฒ์ด, lhs_1๋ก ๋ฐ๊พธ๋๊ฒ ๋ง๋์ง, lhs_2๋ก ๋ฐ๊พธ๋๊ฒ ๋ง๋์ง git์ด ์ด๋ป๊ฒ ์๊ฒ ๋?
๊ทธ๋์ ์ด๋ฐ์์ผ๋ก ์ ํ์ง๋ฅผ ์ค๋ค.
Accept Current Change๋ฅผ ์ ํํ๋ฉด ํ์ฌ ๋ธ๋๋๋ก ๋ฎ์ด์์ฐ๊ณ , Accept Incoming Change๋ฅผ ํ๋ฉด ๊ฐ์ ธ์ค๋ ๋ธ๋์น๋ก ๋ฎ์ด์ด๋ค.
Accept Both Change๋ก ํ๋ฉด ๋๋ค ํฉ์ณ๋ฒ๋ฆฌ๊ธด ํ๋๋ฐ... ์ต์ง๋ก ํฉ์ณ๋ฒ๋ฆฌ๋์ง๋ผ ๊ฒฐ๊ณผ๊ฐ ์ด์ํ ๋๊ฐ ๋ ๋ง์์ ์ฐ์ง ์๋๊ฑธ ๊ถํ๋ค.
๋ญ๋ก๋ ์ ํ์ ํ๊ณ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๋ค๋ฉด, ์ปค๋ฐ์ฐ๊ณ ๋ง์ ์์ ํ๋ฉด ๋๋ค.

squash merge
squash๋ merge ์ฌํญ์ ํ๋๋ก ๋ญ์ณ์ ๋ฃ์ด๋ฒ๋ฆฌ๊ณ ์ถ์๋ ์ฌ์ฉํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ํ๋์ merge ์์ ์ฌํญ์ ์ฌ๋ฌ๊ฐ์ ์ปค๋ฐ์ด ๋ค์ด์๋ค๋ฉด

๋น์ฅ ์์ ํ ๋๋ ๊ด์ฐฎ์ง๋ง, mergeํ ๋ ๋๋์ผ๋ก ์ปค๋ฐ๋ด์ญ์ด ์ฐ๋ฅด๋ฅด ์์์ ธ์ ๋ณด๊ธฐ๊ฐ ์ข ๋ถํธํ ์๊ฐ ์๋ค.
๊ทธ๋ด๋ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ด๋ค.
์ด๋ฐ์์ผ๋ก ์ปค๋ฐ์ด ์ฌ๋ฌ๊ฐ ๋ญ์ณ์๋ ์ํฉ์์ merge๋ฅผ ํ ๋

--squash ์ต์ ์ ์ฃผ๊ณ

์ปค๋ฐ๋ฉ์ธ์ง๋ฅผ ์๋ก ์จ์ฃผ๋ฉด

์ปค๋ฐ์ ํ๋๋ก ๋ญ์ณ์ ๋ง๋ค์ด์ค๋ค.
๊ทผ๋ฐ ์ด๊ฑด master์๋ง ๋ญ์ณ์ค๊ฑฐ๊ณ , develop์๋ ํ๋ํ๋ ๋ค ๋จ์์๋ค.
rebase merge
์ด๊ฑด ์ ์ฉ ๋ช ๋ น์ด๊ฐ ์๋๊ฑด ์๋๊ณ , rebase์ merge๋ฅผ ์ฐ๋ฌ์ ์ฌ์ฉํด์ ์ฒ๋ฆฌํ๋ idiom์ ๋งํ๋ค.
์ด merge๋ฅผ ์ฌ์ฉํ๋ฉด, mergeํ ์ปค๋ฐ๋ค์ ๋์ ๋ธ๋์น์ ์ต์ง๋ก ์ค์
๋ฃ๋๋ค.
๋ญ์น์ง๋ ์๊ณ ๊ทธ๋๋ก, ๋ธ๋์น์์ ์ฐ๊ด์ฑ ์์ด ๋ง์ด๋ค.
develop์ ์ปค๋ฐ์ ๋จผ์ ๋ช๊ฐ ์ธํ ํ๋ค.

๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค.
mergeํ๋ ๊ฒ๊ณผ ๋ฐ๋๋ก rebase๋ฅผ ํ๊ณ , ๋ค์ ๋ฐ๋๋ก ๋์์์ merge๋ฅผ ํ๋ฉด ๋๋ค.
rebaseํ ๋ conflict๊ฐ ์ข ๋ ์๋ ์๋๋ฐ, ๊ทธ๊ฑด ์์์ ์ ํด๊ฒฐํ์.
๊ทธ๋ฌ๋ฉด ์ด๋ฐ์์ผ๋ก ๋ฉ์ธ์ง๊ฐ ๊ทธ๋๋ก ๋ค ๋ค์ด๊ฐ์์ ๊ฒ์ด๋ค.
๊ทผ๋ฐ ์ด๊ฑธ ์ธ์ผ์ด ์๋?
์ ๋ชจ๋ฅด๊ฒ ๋ค.
Pull Request (Github)
Github pull request์์ merge๋ฅผ ํ ๋๋ ์ข
๋ฅ๋ฅผ ์ ํํ ์ ์๋ค.
๋์์ ์์์ ์ค๋ช
ํ ๊ฒ๋ค๊ณผ ๋์ผํ๋ค.
ํ์์ ๋ฐ๋ผ ์ ๊ณจ๋ผ์ฐ๊ธธ ๋ฐ๋๋ค.

์ฐธ์กฐ
https://im-developer.tistory.com/182
https://meetup.toast.com/posts/122