๐ŸฑGit

git rebase, squash

JerryiOS 2024. 2. 2. 14:47

rebase

Git์—์„œ ๋ธŒ๋žœ์น˜์˜ ๊ธฐ๋ก์„ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™์‹œํ‚ค๊ฑฐ๋‚˜ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ณผ์ •

 

ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํšจ๊ณผ์ ์œผ๋กœ ํ†ตํ•ฉํ•  ๋•Œ ์‚ฌ์šฉ

์˜ˆ์ œ

ํ˜„์žฌ ๋ธŒ๋žœ์น˜๊ฐ€ feature-branch์ด๊ณ , main์— ํ†ตํ•ฉํ•  ๊ฒฝ์šฐ

 

git checkout main
git pull origin main  # main ๋ธŒ๋žœ์น˜๋ฅผ ์ตœ์‹ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
git rebase feature-branch

 

squash

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—ฐ์†์ ์ธ ์ปค๋ฐ‹์„ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์œผ๋กœ ํ•ฉ์น˜๋Š” ๊ฒƒ

 

์ฃผ๋กœ ์—ฌ๋Ÿฌ๋ฒˆ์˜ ์ปค๋ฐ‹์„ ํ•˜๋‚˜๋กœ ๋ฌถ์„ ๋•Œ ์‚ฌ์šฉ

์˜ˆ์ œ

ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— 3๊ฐœ์˜ ์—ฐ์† ์ปค๋ฐ‹์ด ์žˆ์„ ๊ฒฝ์šฐ
commit A: Implement feature part 1
commit B: Implement feature part 2
commit C: Fix bug related to the feature

 

์ด 3๊ฐœ์˜ ์ปค๋ฐ‹์„ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์œผ๋กœ ํ•ฉ์น˜๋ ค๋ฉด git rebase -i ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ

git rebase -i HEAD~3

 

์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ…์ŠคํŠธ ์—๋””ํ„ฐ๊ฐ€ ์—ด๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐฝ์ด ๋‚˜ํƒ€๋‚จ

pick A Implement feature part 1
pick B Implement feature part 2
pick C Fix bug related to the feature

 

์—ฌ๊ธฐ์„œ pick์„ squash๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์ €์žฅํ•˜๋ฉด 2๋ฒˆ, 3๋ฒˆ์งธ ์ปค๋ฐ‹์ด 1๋ฒˆ์งธ ์ปค๋ฐ‹์— ํ•ฉ์ณ์ง

 

conflict๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋กœ์ปฌ์—์„œ conflict๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  addํ•œ ๋‹ค์Œ git rebase --continue ๋ช…๋ น์–ด๋กœ ์ง„ํ–‰ํ•˜๋ฉด ์ปค๋ฐ‹์ด ํ•ฉ์ณ์ง

๋ฐ˜์‘ํ˜•