git merge, rebase

git merge

3-way-merge

git_merge

๋ธŒ๋žœ์น˜์— ๊ฐ๊ฐ ์‹ ๊ทœ commit์ด 1ํšŒ ์ด์ƒ ์žˆ๋Š” ๊ฒฝ์šฐ, git merge ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋ฉด ๋‘ ๋ธŒ๋žœ์น˜์˜ ์ฝ”๋“œ๋ฅผ ํ•ฉ์ณ์„œ ์ƒˆ๋กœ์šด commit์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ฒƒ โ†’ merge์˜ ๊ธฐ๋ณธ ๋™์ž‘๋ฐฉ์‹

fast-forward merge

git_fast_forward_merge

๊ฐ€๋”์€ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜์—๋งŒ commit ์ด ์žˆ๊ณ  ๊ธฐ์ค€์ด ๋˜๋Š” ๋ธŒ๋žœ์น˜์—๋Š” ์‹ ๊ทœ commit ์ด ์—†๋Š” ๊ฒฝ์šฐ, mergeํ•˜๋ฉด "fast-forward merge ๋˜์—ˆ๋‹ค" ๋ผ๊ณ  ํ•จ. ์ด๋Š” ๋”ฑํžˆ ํ•ฉ์น  ๊ฒƒ์ด ์—†์–ด ์‹ ๊ทœ๋ธŒ๋žœ์น˜์—๊ฒŒ "์ง€๊ธˆ๋ถ€ํ„ฐ ๋„ˆ๋Š” main ๋ธŒ๋žœ์น˜๋‹ค" ๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ž„. ๋ฌผ๋ก  3-way merge ๊ฒฐ๊ณผ์™€ ๊ฐ™์Œ

git rebase & merge

git_rebase

๋ธŒ๋žœ์น˜์˜ ์‹œ์ž‘์ ์„ ๋‹ค๋ฅธ commit์œผ๋กœ ์˜ฎ๊ฒจ์ฃผ๋Š” ๊ฒƒ rebase๋กœ ์‹ ๊ทœ๋ธŒ๋žœ์น˜์˜ ์‹œ์ž‘์ ์„ main ๋ธŒ๋žœ์น˜ ์ตœ๊ทผ commit์œผ๋กœ ์˜ฎ๊ธด ๋‹ค์Œ, fast-forward mergeํ•˜๋ฉด ๋จ

git switch {์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜}
git rebase main

git switch main
git merge {์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜}

git squash & merge

git_squash

์ž‘์—… ํด๋”์—์„œ staging area๋กœ ์˜ฎ๊ฒจ์ฃผ๋ฉด์„œ commitํ•  ํŒŒ์ผ๋“ค staging ํ•˜๊ธฐ

git switch main
git merge --squash {branch๋ช…}
git commit -m '๋ฉ”์„ธ์ง€'

Last updated