๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Git

[git] Git rebase(๋ฆฌ๋ฒ ์ด์Šค)๋ž€?

by ์„œ์•„๋ž‘๐Ÿ˜ 2023. 8. 10.

 

git rebase๋ž€?

git rebase๋Š” Git ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด ์ค‘ ํ•˜๋‚˜๋กœ, ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ์žฌ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์น  ๋•Œ ์ฃผ๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. git rebase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋žœ์น˜๋ฅผ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ git rebase๋Š” ๋‘ ๊ฐœ์˜ ์ปค๋ฐ‹์„ ์„ ํƒํ•˜์—ฌ ์ด๋ ฅ์„ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ์„ค๋ช…์„ ์œ„ํ•ด ๋‹ค์Œ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



1. ๊ธฐ๋ณธ ๊ฐœ๋…
   - Git์€ ์ปค๋ฐ‹ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ฌ์šฉํ•ด ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ปค๋ฐ‹์€ ๋ถ€๋ชจ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ๋ธŒ๋žœ์น˜๋Š” ์ด๋Ÿฌํ•œ ์ปค๋ฐ‹์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ ˆํผ๋Ÿฐ์Šค์ž…๋‹ˆ๋‹ค.

2. ๋ธŒ๋žœ์น˜ ์ด๋™
   - ๋ธŒ๋žœ์น˜ A์—์„œ ์ž‘์—…ํ•˜๋˜ ์ค‘ ๋ธŒ๋žœ์น˜ B์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
   - git checkout A๋กœ ๋ธŒ๋žœ์น˜ A๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
   - git rebase B ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด, ๋ธŒ๋žœ์น˜ A์˜ ์ปค๋ฐ‹๋“ค์ด ๋ธŒ๋žœ์น˜ B์˜ ๊ฐ€์žฅ ์ตœ์‹  ์ปค๋ฐ‹ ์œ„์— ์žฌ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

3. ๋ณ€๊ฒฝ ๋‚ด์šฉ ๋ฐ˜์˜
   - ๋‹ค๋ฅธ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ, ๋ธŒ๋žœ์น˜ A์—์„œ ์ž‘์—…ํ•˜๋‹ค๊ฐ€ ๋ธŒ๋žœ์น˜ B์— ์žˆ๋Š” ์ตœ์‹  ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ธŒ๋žœ์น˜ A์—๋„ ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.
   - git checkout A๋กœ ๋ธŒ๋žœ์น˜ A๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
   - git rebase B ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด, ๋ธŒ๋žœ์น˜ A์˜ ์ปค๋ฐ‹๋“ค์ด ๋ธŒ๋žœ์น˜ B์˜ ๊ฐ€์žฅ ์ตœ์‹  ์ปค๋ฐ‹ ์œ„์— ์žฌ๋ฐฐ์น˜๋˜์–ด ๋ธŒ๋žœ์น˜ B์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด ๋ธŒ๋žœ์น˜ A์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

 


git rebase๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์œ ์˜ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

- ์žฌ๋ฐฐ์น˜๋œ ์ปค๋ฐ‹๋“ค์€ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ฉฐ, ์ด๋ ฅ์˜ SHA-1 ํ•ด์‹œ๊ฐ€ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.
- ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋Š” ๋ธŒ๋žœ์น˜์˜ ๊ฒฝ์šฐ, ์ฃผ์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ์ด๋ ฅ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ž‘์—…์ด ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, git rebase ์ž‘์—… ๋„์ค‘์— ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๊ณ  git rebase --continue ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์† ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


 

 

branch merge์™€์˜ ์ฐจ์ด

git rebase์™€ ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ(Merge) ๋ฐฉ์‹์€ Git์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ํ•ฉ์น˜๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

1. Git Rebase
   - git rebase๋Š” ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ๋‹ค์‹œ ๊ตฌ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด๋กœ, ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹๋“ค์„ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ํŠน์ • ์ปค๋ฐ‹ ์œ„๋กœ ์žฌ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
   - ์žฌ๋ฐฐ์น˜๋œ ์ปค๋ฐ‹๋“ค์€ ์ƒˆ๋กœ์šด ๋ถ€๋ชจ ์ปค๋ฐ‹ ์œ„์— ์Œ“์ด๋ฉฐ, ๋ณ€๊ฒฝ ์ด๋ ฅ์ด ์„ ํ˜•์ ์œผ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
   - ๋ณด๋‹ค ๊น”๋”ํ•œ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋‚˜ ์ด๋ ฅ ์ถ”์ ์ด ์‰ฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
   - ํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ํ˜‘์—…ํ•  ๋•Œ, ์ด๋ ฅ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ํ˜ผ๋ž€์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ž์ฃผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ (Merge)
   - ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ์€ ๋‘ ๊ฐœ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์น˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
   - git merge ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ๋ณ‘ํ•ฉํ•˜๋ฉฐ, ๋‘ ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ์„ ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์œผ๋กœ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.
   - ๋ณ‘ํ•ฉ ์ปค๋ฐ‹์€ ๋ณ‘ํ•ฉ๋œ ๋‘ ๋ธŒ๋žœ์น˜์˜ ๋ถ€๋ชจ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
   - ๋ณ€๊ฒฝ ์ด๋ ฅ์ด ๋ณ‘ํ•ฉ๋œ ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ์ง€๋˜๋ฉฐ, ๋ณ‘ํ•ฉ ๊ณผ์ •์—์„œ ์ž๋™์œผ๋กœ ์ถฉ๋Œ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

- git rebase:
  - ์žฅ์ : ๊น”๋”ํ•œ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ, ๋ณ€๊ฒฝ ์ด๋ ฅ์˜ ์„ ํ˜•์„ฑ, ์ด๋ ฅ ์ถ”์  ๋ฐ ๋ฆฌ๋ทฐ ์šฉ์ด์„ฑ.
  - ๋‹จ์ : ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ํ˜‘์—… ์‹œ ์ด๋ ฅ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ํ˜ผ๋ž€ ๊ฐ€๋Šฅ์„ฑ, ์ถฉ๋Œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์ฆ๊ฐ€.

- ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ (Merge):
  - ์žฅ์ : ์ถฉ๋Œ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ํ˜‘์—… ์‹œ ํ˜ผ๋ž€ ๋ฐฉ์ง€, ๋น„๊ต์  ์ง๊ด€์ ์ธ ์ด๋ ฅ ์œ ์ง€.
  - ๋‹จ์ : ๋ณ‘ํ•ฉ ์ปค๋ฐ‹์œผ๋กœ ์ธํ•ด ์ด๋ ฅ์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Œ.

'Git' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[git] .gitignore ์ ์šฉ ์•ˆ๋  ๋•Œ  (0) 2023.08.10

๋Œ“๊ธ€