Search

Git Merge

Git Merge

μ„œλ‘œ λ‹€λ₯Έ 브랜치λ₯Ό ν•˜λ‚˜λ‘œ ν†΅ν•©ν•˜λŠ” Git의 핡심 λͺ…λ Ήμ–΄λ‘œ, 브랜치 κ°„μ˜ λ³€κ²½ 사항을 ν•˜λ‚˜μ˜ 브랜치둜 κ²°ν•©ν•©λ‹ˆλ‹€.

Git Merge λͺ…λ Ήμ–΄

κΈ°λ³Έ λͺ…λ Ήμ–΄

ν˜„μž¬ λΈŒλžœμΉ˜μ— λ‹€λ₯Έ 브랜치λ₯Ό 병합
git merge [브랜치λͺ…]
Bash
볡사
ν˜„μž¬ 브랜치
λͺ…λ Ήμ–΄
적용 λ°©ν–₯
μ„€λͺ…
aloha
git merge main
main aloha
main 의 λ³€κ²½ 사항을 aloha 에 λ³‘ν•©ν•©λ‹ˆλ‹€.
main
git merge aloha
aloha main
aloha 의 λ³€κ²½ 사항을 main 에 λ³‘ν•©ν•©λ‹ˆλ‹€.

병합 컀밋 λ©”μ‹œμ§€ μž‘μ„±

git merge -m "컀밋 λ©”μ‹œμ§€" [브랜치λͺ…]
Bash
볡사

Fast-forward 병합

git merge --ff [브랜치λͺ…]
Bash
볡사
Fast-forward 병합은 ν˜„μž¬ λΈŒλžœμΉ˜μ™€ λ³‘ν•©ν•˜λ €λŠ” λΈŒλžœμΉ˜κ°€ 직선적인 관계일 λ•Œ μ‚¬μš©λ˜λŠ” 병합 λ°©μ‹μž…λ‹ˆλ‹€. 즉, ν•œ λΈŒλžœμΉ˜κ°€ λ‹€λ₯Έ λΈŒλžœμΉ˜λ³΄λ‹€ μ΅œμ‹ μΈ μƒνƒœμ—μ„œ 병합이 μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.
Fast-forward λ³‘ν•©μ˜ νŠΉμ§•:
β€’
μƒˆλ‘œμš΄ 병합 컀밋을 μƒμ„±ν•˜μ§€ μ•Šκ³  브랜치 ν¬μΈν„°λ§Œ μ΄λ™ν•©λ‹ˆλ‹€.
β€’
νžˆμŠ€ν† λ¦¬κ°€ λ‹¨μˆœν•˜κ³  κΉ”λ”ν•˜κ²Œ μœ μ§€λ©λ‹ˆλ‹€.
β€’
브랜치 κ°„μ˜ λ³€κ²½ 사항이 μΆ©λŒν•˜μ§€ μ•Šμ„ λ•Œλ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€.
Fast-forward 병합이 λΆˆκ°€λŠ₯ν•œ 경우:
β€’
두 λΈŒλžœμΉ˜κ°€ μ„œλ‘œ λ‹€λ₯Έ 컀밋을 κ°€μ§€κ³  μžˆμ„ λ•Œ
β€’
λ³‘ν•©ν•˜λ €λŠ” λΈŒλžœμΉ˜λ“€μ΄ λΆ„κΈ°λœ 이후 각각 μƒˆλ‘œμš΄ 컀밋이 μžˆλŠ” 경우
# Fast-forward 병합 κ°•μ œλ‘œ λΉ„ν™œμ„±ν™” git merge --no-ff [브랜치λͺ…] # Fast-forward λ³‘ν•©λ§Œ ν—ˆμš© (병합 λΆˆκ°€λŠ₯ν•œ 경우 μ‹€νŒ¨) git merge --ff-only [브랜치λͺ…]
Bash
볡사

Merge μ˜΅μ…˜

μ˜΅μ…˜
μ„€λͺ…
--ff
Fast-forward 병합 μˆ˜ν–‰ (κΈ°λ³Έκ°’)
--no-ff
항상 μƒˆλ‘œμš΄ 병합 컀밋 생성
--squash
브랜치의 λͺ¨λ“  컀밋을 ν•˜λ‚˜λ‘œ μ••μΆ•ν•˜μ—¬ 병합
--abort
병합 좩돌 μ‹œ 병합 μž‘μ—… μ·¨μ†Œ
--continue
좩돌 ν•΄κ²° ν›„ 병합 계속 μ§„ν–‰
--allow-unrelated-histories
둜 κ΄€λ ¨ μ—†λŠ” νžˆμŠ€ν† λ¦¬λ₯Ό κ°€μ§„ 두 브랜치λ₯Ό 병합

--allow-unrelated-histories μ˜΅μ…˜

git merge --allow-unrelated-histories origin/main
Bash
볡사
이 μ˜΅μ…˜μ€ μ„œλ‘œ κ΄€λ ¨ μ—†λŠ” νžˆμŠ€ν† λ¦¬λ₯Ό κ°€μ§„ 두 브랜치λ₯Ό 병합할 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
μ£Όμš” μ‚¬μš© 사둀:
β€’
μƒˆλ‘œμš΄ 원격 μ €μž₯μ†Œλ₯Ό 둜컬 μ €μž₯μ†Œμ™€ 병합할 λ•Œ
β€’
μ™„μ „νžˆ λ…λ¦½μ μœΌλ‘œ μ‹œμž‘λœ 두 ν”„λ‘œμ νŠΈλ₯Ό 병합할 λ•Œ
β€’
곡톡 컀밋 νžˆμŠ€ν† λ¦¬κ°€ μ—†λŠ” λΈŒλžœμΉ˜λ“€μ„ 톡합할 λ•Œ
기본적으둜 Git은 κ΄€λ ¨ μ—†λŠ” νžˆμŠ€ν† λ¦¬λ₯Ό κ°€μ§„ 브랜치의 병합을 κ±°λΆ€ν•©λ‹ˆλ‹€. μ΄λŠ” μ‹€μˆ˜λ‘œ 잘λͺ»λœ μ €μž₯μ†Œλ₯Ό λ³‘ν•©ν•˜λŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•œ μ•ˆμ „ μž₯μΉ˜μž…λ‹ˆλ‹€. --allow-unrelated-histories μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄ μ΄λŸ¬ν•œ μ œν•œμ„ μš°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
# μ˜ˆμ‹œ: 원격 μ €μž₯μ†Œμ˜ main 브랜치λ₯Ό 둜컬과 병합 git merge --allow-unrelated-histories origin/main # 좩돌이 λ°œμƒν•œ 경우 ν•΄κ²° ν›„ git add . git commit -m "병합 μ™„λ£Œ"
Bash
볡사