General/🟒 General

[Git] Rebase μ‚¬μš©ν•˜κΈ°

woozzang 2022. 2. 13. 14:57

μ•ˆλ…•ν•˜μ„Έμš”πŸΆ

이번 μ‹œκ°„μ—λŠ” κ°œλ…μ€ μ•Œμ•˜μ§€λ§Œ μ‹€μ œ μ μš©μ€ 많이 해보지 μ•Šμ•˜λ˜

rebase 에 λŒ€ν•΄ μ •λ¦¬ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

μ΄μ œλΆ€ν„°λΌλ„ 깃이 μ œκ³΅ν•˜λŠ” λ‹€μ–‘ν•œ κΈ°λŠ₯듀을 μ œλŒ€λ‘œ μ‚¬μš©ν•΄λ³΄λ €κ΅¬μš”.

λ¦¬λ² μ΄μŠ€λŠ” μ–΄λ €μš΄ κ°œλ…μ΄ μ•„λ‹™λ‹ˆλ‹€.

그럼 μ‹œμž‘ν• κ²Œμš”!

 

무엇을 ν•˜λŠ” λͺ…령인가?

베이슀 컀밋을 κ°ˆμ•„μΉ˜κΈ° ν•œλ‹€.

base λ₯Ό λ‹€μ‹œ(re) μ •ν•œλ‹€.

 

λͺ©μ 

λΆˆν•„μš”ν•œ 병합 컀밋을 μ€„μ—¬μ„œ

κ·Έλž˜ν”„λ₯Ό κΉ”λ”ν•˜κ²Œ 보이게 ν•  수 μžˆλ‹€.

 

ν™œμš©ν•  수 μžˆλŠ” 상황

upstream 의 main 브랜치둜 ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό 보내렀고 ν•˜λŠ”λ°, merge conflict κ°€ λ°œμƒν•œλ‹€.

보톡과 같은 상황이면 μžμ‹ μ˜ μž‘μ—… 브랜치둜 main 을 λ¨Έμ§€ν•΄μ„œ μΆ©λŒμ„ ν•΄κ²°ν•œν›„,

λ‹€μ‹œ pr 을 보내면 λœλ‹€. ( fast-forward merge κ°€ 될 것 이닀 )

μ΄λ ‡κ²Œ ν•˜λ©΄ μ›λž˜ 변경점에 λŒ€ν•˜μ—¬ 1개의 μ»€λ°‹λ§Œ 있으면 λ˜λŠ”λ°, μΆ©λŒμ„ ν•΄κ²°ν•˜κΈ° μœ„ν•œ λΆˆν•„μš”ν•œ 컀밋이 μΆ”κ°€λœλ‹€.

이 λΆˆν•„μš”ν•œ 컀밋을 쀄일 수 μžˆλŠ” 방법이 rebase 이닀.

 

μ†ŒμŠ€νŠΈλ¦¬μ—μ„œ μ‚¬μš©λ²•

μž‘μ—… λΈŒλžœμΉ˜μ— 체크아웃 λ˜μ–΄μžˆλŠ”μ§€ 확인 ν›„, λ¦¬λ² μ΄μŠ€ν•  컀밋을 였λ₯Έμͺ½ ν΄λ¦­ν•˜μ—¬  rebase λ₯Ό μ§„ν–‰ν•œλ‹€.

좩돌이 λ°œμƒν•œλ‹€λ©΄ ν•΄κ²°ν•˜κ³  μ»€λ°‹ν•œλ‹€.

push ν•˜μ—¬ 원격에도 λ°˜μ˜ν•œλ‹€.

(ν•„μš” μ‹œ) pr ν•œλ‹€.

 

 CLI μ‚¬μš©λ²•

git rebase [리베이슀 λŒ€μƒ 브랜치] [리베이슀 브랜치]

μ΄λ•Œ, 리베이슀 λΈŒλžœμΉ˜μ— 체크아웃 쀑이라면 [리베이슀 λΈŒλžœμΉ˜λŠ” μƒλž΅κ°€λŠ₯]

예λ₯Ό λ“€μ–΄, master 브랜치의 μ΅œμ‹  μ»€λ°‹μœΌλ‘œ feature 브랜치λ₯Ό λ¦¬λ² μ΄μŠ€ν•˜λ €λŠ” 경우

git rebase master feature

 

feature λΈŒλžœμΉ˜μ— μ²΄ν¬μ•„μ›ƒλ˜μ–΄μžˆλ‹€λ©΄

git rebase master

 

μ£Όμ˜μ‚¬ν•­

λ¦¬λ² μ΄μŠ€λŠ” 혼자 μž‘μ—…ν•˜λŠ” λΈŒλžœμΉ˜μ—μ„œ ν•΄μ•Όν•œλ‹€.

잘λͺ»ν•˜λ©΄ 꼬일 수 있기 λ•Œλ¬Έμ΄λ‹€.

 

κ³΅λΆ€ν•˜λ©΄μ„œ ν™˜κΈ°ν•œ κ°œλ…

fetch

μ‹€μ œ μ½”λ“œμ— λ°˜μ˜λ˜μ§€ μ•Šκ³  이λ ₯만 κ°€μ Έμ˜¨λ‹€λŠ” νŠΉμ§•μ΄ μžˆλ‹€.

upstream κ³Ό 같이 λ‹€λ₯Έ 원격 μ €μž₯μ†Œμ˜ 컀밋 이λ ₯을 κ°€μ Έμ˜€κ³  싢을 λ•Œ ν™œμš©ν•˜λ©΄ μ’‹κ² λ‹€.

upstream

원본 μ €μž₯μ†Œλ₯Ό κ°€λ¦¬ν‚€λŠ” κ΄€μš©μ μΈ 단어이닀.

λ§Œμ•½ A λΌλŠ” μ €μž₯μ†Œλ₯Ό fork ν•œ B μ €μž₯μ†Œκ°€ μžˆλ‹€λ©΄, B 의 upstream 은 A 이닀.

fast-forward

λ³‘ν•©μ˜ 결과물이 λ³‘ν•©ν•˜λ €λŠ” λΈŒλžœμΉ˜μ™€ λ˜‘κ°™μ€ 경우

A λΈŒλžœμΉ˜μ™€ B 브랜치 머지 결과물이 B 브랜치인 경우λ₯Ό 가리킨닀.


 

μ˜€λŠ˜λ„ λ‚˜λŠ” μ„±μž₯ν–ˆλ‹€!!πŸ”₯

 

πŸ€–πŸŸ’[우짱의 iOS λΈ”λ‘œκ·Έ]πŸ”΅πŸ’»

iOSλ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ 배운 λ‚΄μš©μ„ κΈ°λ‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

 

[참고 자료]