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
좩돌 ν•΄κ²° ν›„ 병합 계속 μ§„ν–‰