Rebase&Cherri-Pick

merge์ „

์œ„์˜ ๊ทธ๋ฆผ์—์„œ๋Š” experiment์™€ master๋‘๊ฐœ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ๋‚˜๋ˆ„์–ด์ ธ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋‘๊ฐœ์˜ ๋ธŒ๋žœ์น˜๋ฅผ master๋ธŒ๋žœ์น˜์—์„œ mergeํ•˜๊ฒŒ ๋˜๋ฉด ์ƒˆ๋กœ์šด commit์ด ์ƒ๊ธฐ๋ฉฐ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•ฉ์ณ์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. mergeํ›„

์ฆ‰, ๋‘๊ฐœ์˜ branch๊ฐ€ ๋‚˜๋ˆ„์–ด์กŒ๋‹ค๊ฐ€ ํ•ฉ์ณ์ง„๋‹ค.

ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ํ•œ ์ค„๋กœ ๊ด€๋ฆฌํ•˜๊ณ ์‹ถ๋‹ค๋ฉด Rebase๋‚˜ Cherry-Pick์„ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค.

Cherry-Pick

Commit ์ „์ฒด๋ฅผ mergeํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ 1~2๊ฐœ๋งŒ ๊ณจ๋ผ์„œ mergeํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

[master c7d4ca5] commit1
[master 4de8b93] commit2
[master ea017e9] commit3

๋‹ค์Œ๊ณผ ๊ฐ™์ด 3๊ฐœ์˜ commit๋Š”๋ฐ ์ด์ค‘ ํ•œ๊ฐœ(commit2)๋งŒ cherry-pickํ•ด์„œ merge๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

$ git cherry-pick 4de8b93

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์ฃผ๋ฉด๋œ๋‹ค.

Rebase

rebase๋Š” cherry-pick์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด์ฃผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ์—ฐ๊ฒฐ๋œ ์ปค๋ฐ‹์„ ๊ทธ ์ˆœ์„œ๋Œ€๋กœ ํ•œ๋ฐฉ์— Cherry-pick ํ•ด์˜จ๋‹ค.

๋‹ค์Œ ๊ทธ๋ฆผ์€ experiment์™€ master branch๊ฐ€ mergeํ•˜์—ฌ ์ƒˆ๋กœ์šด commit์ด ์ƒ๊ธด ๊ฒฝ์šฐ์ด๋‹ค.

$ git checkout experiment
$ git rebase master

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋™ํ•œ ๋‹ค์Œ์— ์ฐจ๋ก€๋Œ€๋กœ ์ ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

$ git checkout master
$ git merge experiment

rebaseํ›„์— merge๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•œ์ค„๋กœ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Last updated

Was this helpful?