[git] rebase - f-lab-edu/jshop GitHub Wiki

rebase๋Š” ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹ ์‹œํ€€์Šค๋ฅผ ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๋Š” ์ž‘์—…์ด๋‹ค.

์˜ˆ์‹œ๋กœ ์•Œ์•„๋ณด์ž.

ํ˜„์žฌ ์ž‘์—…์ค‘์ด ๋‘๊ฐœ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ๋‹ค.

  • feature/add-test-code : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • feature/modify-custom-userdetails : ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋‹ค, UserDetails ์ชฝ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•ด์„œ ๋งŒ๋“  ๋ธŒ๋žœ์น˜

feature/modify-custom-userdetails ์—์„œ ์ž‘์—…์„ ๋งˆ์น˜๊ณ , ์›๋ž˜ ๋ธŒ๋žœ์น˜์ธ feature/add-test-code ๋กœ PR์„ ๋„ฃ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋จธ์ง€ ์ง์ „์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๊ณ , ์ด๋Š” ์ƒˆ๋กœ ๋ณ€๊ฒฝ๋œ ๋ธŒ๋žœ์น˜์ธ feature/modify-custom-userdetails ์—์„œ ์ง„ํ–‰ํ•ด์•ผ ํ–ˆ๋‹ค.

์ƒˆ๋กœ ์ถ”๊ฐ€ํ•œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ถ”๊ฐ€ ์ž‘์—…์€ ๋‚˜์ค‘์— feature/add-test-code ๋กœ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด feature/add-test-code-tmp ๋ธŒ๋žœ์น˜๋กœ ๋”ฐ๋กœ ๊ธฐ๋ก์„ ํ•ด๋‘์—ˆ๋‹ค.

์ด์ œ PR์ด approve ๋˜๊ณ , feature/add-test-code ๋ธŒ๋žœ์น˜์™€ feature/modify-custom-userdetails ๋ธŒ๋žœ์น˜๊ฐ€ ๋จธ์ง€๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋œ๋‹ค.

์ด์ œ ๋จธ์ง€๋˜๊ธฐ์ „ ๋ธŒ๋žœ์น˜์ธ feature/modify-custom-userdetails ์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์ธ feature/add-test-code ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-06-14 10 38 38

https://www.atlassian.com/ko/git/tutorials/rewriting-history/git-rebase

์ด๋Ÿฌํ•œ ๊ทธ๋ฆผ์ด ๋œ๋‹ค.

์ฆ‰ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ์ˆ˜ํ–‰ํ•œ ์ปค๋ฐ‹ ์‹œํ€€์Šค๋ฅผ ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋กœ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์ด๋‹ค.

git rebase ์‚ฌ์šฉ

๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜(feature/add-test-code-tmp) ์—์„œ ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์„ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ (feature/add-test-code) ๋กœ ์˜ฎ๊ฒจ๋ณด์ž.

์ปค๋ฐ‹์„ ์˜ฎ๊ธธ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•œ๋‹ค.

git checkout feature/add-test-code-tmp

rebase ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

git rebase feature/add-test-code

rebase ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด feature/add-test-code ์˜ ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹ ๋’ค์— ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์ด ์ƒ์„ฑ๋œ๋‹ค.

feature/add-test-code ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•ด fast-forward ๋จธ์ง€๋ฅผ ์ˆ˜ํ–‰ํ•ด์ค€๋‹ค.

git checkout feature/add-test-code
git merge feature/add-test-code-tmp

ํ•„์š”์— ๋”ฐ๋ผ ๋ถˆํ•„์š”ํ•œ ๋ธŒ๋žœ์น˜๋Š” ์ œ๊ฑฐํ•œ๋‹ค.

git branch -d feature/add-test-code-tmp

์ง€์ €๋ถ„ํ•œ ๋จธ์ง€ ์—†์ด ๊น”๋”ํ•˜๊ฒŒ ๋ฐ˜์˜๋œ ๋ชจ์Šต์ด๋‹ค.

์–ธ์ œ ์จ์•ผํ•˜๋Š”๊ฐ€

๋‚˜๋Š” ๋ณดํ†ต rebase๋ฅผ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜์—์„œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์›๋ณธ ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜๋˜๊ธฐ ์ „ ์›๋ณธ ๋ธŒ๋žœ์น˜์—์„œ ์ถ”๊ฐ€ํ•ด์•ผํ•  ์ž‘์—…์ด ์žˆ์„๋•Œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‚˜์ค‘์— rebase๋กœ ๋ถ™์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

์ฆ‰ ์œ„์˜ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๊ฐ€ ์›๋ณธ ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€๋˜๊ธฐ ์ „, ์›๋ณธ ๋ธŒ๋žœ์น˜์—์„œ ์ง„ํ–‰ํ•ด์•ผํ•  ์ž‘์—…์ด ์žˆ์„๋•Œ ์šฐ์„  ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜์—์„œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ํŒŒ ์ˆ˜ํ–‰ํ•˜๊ณ  (๋ณดํ†ต ๊ตฌ๋ถ„์„ ์œ„ํ•ด ์ด๋ฆ„ ๋’ค์— tmp ๋ฅผ ๋ถ™์ž„) ๋‚˜์ค‘์— ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๊ฐ€ ๋จธ์ง€๋œ๋‹ค๋ฉด, ์›๋ณธ ๋ธŒ๋žœ์น˜์—์„œ rebase ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์žฅ์ 

rebase๋Š” ์ปค๋ฐ‹ ๊ธฐ๋ก์„ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ์œ„์˜ ์ƒํ™ฉ์—์„œ merge๋ฅผ ํ•ด๋„ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ, ์ง€์ €๋ถ„ํ•œ ๋ธŒ๋žœ์น˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋œ๋‹ค.

๋‚˜์ค‘์— ์˜๋„๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ๋„ ํž˜๋“ค๊ณ , ์•Œ์•„๋ณด๊ธฐ๋„ ํž˜๋“ค๋‹ค.

์ด๋Ÿด๋•Œ rebase๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊น”๋”ํ•˜๊ฒŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ 

ํ•ญ์ƒ ์žฅ์ ๋งŒ ์žˆ๋Š”๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. rebase์ž์ฒด๊ฐ€ ๋ฒ ์ด์Šค๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ ์ด์ „ ๋ฒ ์ด์Šค์—์„œ ๋‚˜๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค๋ฉด, ์ข€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.