Git & Sourcetree

merge: 브랜치 병합

정ꡬ 2022. 2. 17. 17:01
728x90

πŸ€”λ³‘ν•©μ΄λž€?

ν•˜λ‚˜μ˜ 브랜치λ₯Ό ν˜„μž¬ λΈŒλžœμΉ˜μ™€ ν•©μΉ˜λŠ” 것을 병합(merge)라고 ν•œλ‹€. 

 

예λ₯Ό λ“€μ–΄ ν—€λ“œ λΈŒλžœμΉ˜κ°€ main이고 μ—¬κΈ°μ„œ version2 브랜치λ₯Ό λ³‘ν•©ν•˜λ©΄ version2의 λ‚΄μš©μ΄ main에 λ°˜μ˜λœλ‹€.

 

 

 

상황 1 : ν—€λ“œ λΈŒλžœμΉ˜μ— λ³€κ²½ 사항이 없을 경우

 

κ°€μž₯ μ‰¬μš΄ 상황이라고 ν•  수 μžˆλ‹€.

 

ν•©μΉ˜λ €λŠ” λΈŒλžœμΉ˜κ°€ ν—€λ“œ λΈŒλžœμΉ˜λ‘œλΆ€ν„° μ‹œμž‘μ΄ λ˜μ—ˆκ³  κ·Έ 사이, ν—€λ“œ λΈŒλžœμΉ˜μ—λŠ” μ „ν˜€ 갱신이 μ—†λŠ” 상황이닀.

 

μ—…λ°μ΄νŠΈ 될 λ‚΄μš©λ§Œ λ”°λ‘œ 브랜치λ₯Ό λ§Œλ“€μ–΄ μ§„ν–‰ν•œ 것 같은 상황이고, 주둜 혼자 μž‘μ—…μ„ ν•  λ•Œ λ°œμƒν•˜λŠ” 상황이닀.

 

 

* κ°€ λΆ™μœΌλ©΄ ν—€λ“œ 브랜치

ν—€λ“œ 브랜치인 mainμ—μ„œ version2κ°€ μ‹œμž‘λ˜κ³  두 번 μ»€λ°‹ν•œ μƒνƒœμ΄λ‹€.

 

μ—¬κΈ°μ„œ 병합을 ν•˜λ©΄ λ‹¨μˆœν•˜κ²Œ main λΈŒλžœμΉ˜κ°€ κ°€λ₯΄ν‚€λŠ” 컀밋이 version2의 μ»€λ°‹μœΌλ‘œ μ΄λ™ν•œλ‹€.

 

μ°Έ 쉽죠?

이런 상황을 fast-forward 라고 ν•œλ‹€. λ‹¨μˆœνžˆ 브랜치의 참쑰만 κ°±μ‹ λ˜λŠ” 상황이닀.

 

 

 

상황 2 : κ°€μ§€κ°€ μƒκ²¨λ‚œ 경우

상황이 쑰금 λ³΅μž‘ν•΄μ‘Œλ‹€. λͺ¨λ‘ μ’…μ’… λ°œμƒν•˜λŠ” 상황이닀.

  • κ³Όκ±° μ»€λ°‹μœΌλ‘œλΆ€ν„° 브랜치λ₯Ό μƒμ„±ν•΄μ„œ μž‘μ—…μ„ ν•œ 경우
  • μƒˆλ‘œμš΄ 브랜치 μž‘μ—… 이후에 ν—€λ“œμ— λ‹€λ₯Έ μƒˆ 컀밋이 μžˆλŠ” 경우
  • μ—¬λŸ¬ 브랜치λ₯Ό λ™μ‹œμ— μž‘μ—…ν•˜λ©΄μ„œ 병합을 μ‹œλ„ν•  겨우

 

이 κ²½μš°μ—λ„ 기본이 λ˜λŠ” ν—€λ“œ λΈŒλžœμΉ˜μ—μ„œ νƒ€κ²Ÿ 브랜치λ₯Ό λ³‘ν•©ν•˜λ©΄ 되긴 ν•˜λŠ”λ°, 이 λ•Œ μ—¬λŸ¬ λΈŒλžœμΉ˜μ—μ„œ λ™μ‹œμ— λ³€κ²½ν•œ 파일이 μžˆμ„ 경우 좩돌이 λ°œμƒν•  수 μžˆλ‹€.

 

좩돌이 생기면 μ—λŸ¬ λ©”μ„Έμ§€λ₯Ό λ„μš°κ²Œ 되고, λ‹€ν–‰νžˆ 혼자 μž‘μ—…ν•˜λŠ” κ²½μš°μ—λŠ” 좩돌 해결이 μ‰¬μš΄ νŽΈμ΄λ‹€.

  • 보톡 κ°€μž₯ μ΅œμ‹  λ‚΄μš© ν•˜λ‚˜λ§Œ μ„ νƒν•˜λ©΄ λ˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.
  • μ΅œμ‹  λ‚΄μš©μ€ 보톡 νƒ€κ²Ÿ λΈŒλžœμΉ˜μ— μžˆλŠ” κ²½μš°κ°€ λ§Žλ‹€.
  • μ—¬λŸ¬ νŒŒμΌμ— λ³€κ²½ 사항이 ν˜Όμž¬ν•΄ μžˆλŠ” κ²½μš°λ„ 본인이 κ°œλ°œν–ˆμœΌλ―€λ‘œ μˆ˜μ • κ°€λŠ₯ν•  것이닀.

 

μ†ŒμŠ€νŠΈλ¦¬μ™€ 에디터λ₯Ό μ‚¬μš©ν•˜λ©΄ μ–΄λ ΅κΈ° μ•Šκ²Œ 좩돌 해결이 κ°€λŠ₯ν•˜λ‹€.

 

μΆ©λŒμ„ ν•΄κ²°ν–ˆλ‹€λ©΄ λ‹€μŒκ³Ό 같은 λͺ¨μŠ΅μ΄ 될 것이닀.

 

겁낼것 μ—†λ‹€. λ„λ§μΉ˜μ§€λ§ˆ! λ§žμ„œμ‹Έμ›Œ!

 

 

 

πŸ˜Žν•΄λ΄…μ‹œλ‹€

μ§€λ‚œ μ‹œκ°„μ— 이어

 

κ³Όκ±° μ‹œμ μ˜ μ»€λ°‹μœΌλ‘œ λΆ€ν„° 브랜치λ₯Ό μƒμ„±ν•˜κ³ , νŠΉμ •μž‘μ—…μ„ μˆ˜ν–‰ν•œ 상황이닀.

 

mainκ³Ό version2 λ‘κ°€μ§€λ‘œ λ‚˜λ‰˜μ–΄μ Έμžˆλ‹€.

 

main 브랜치λ₯Ό 체크아웃 ν•œ ν›„ version2 브랜치λ₯Ό λ³‘ν•©ν•΄λ³΄μž.

main으둜 체크아웃 / version2에 우클릭 λ³‘ν•©ν•˜κΈ°

 

 

그럼 μ—λŸ¬κ°€ λ°œμƒν•  것이닀.

 

과거의 μ»€λ°‹μœΌλ‘œ λΆ€ν„° 두가지 λΆ„κΈ°κ°€ 생겨났기 λ•Œλ¬Έμ— μ„œλ‘œ λ™μΌν•œ νŒŒμΌμ„ λ‹€λ₯Έ λ‚΄μš©μœΌλ‘œ μˆ˜μ •ν•˜λ €κ³  ν•˜κΈ°λ•Œλ¬Έ

 

λ³‘ν•©ν•˜λ‹ˆκΉ μΆ©λŒλ‚«λ„€ 그럼 μˆ˜λ™μœΌλ‘œ 해야됨

 

 

이런 경우 크게 μ–΄λ ΅μ§€ μ•Šκ²Œ νŒŒμΌμ„ μˆ˜μ •ν•  수 μžˆλ‹€.

 

μŠ€ν…Œμ΄μ§€μ— μ˜¬λΌκ°„ νŒŒμΌμ„ μ„ νƒν•˜κ³  'μˆ˜μ • ν›„ 파일'을 μ„ νƒν•˜μ—¬ ν•΄λ‹Ή νŒŒμΌμ„ μ—΄λ©΄ λ‹€μŒκ³Ό 같은 λͺ¨μŠ΅μ΄λ‹€.

 

같은 νŒŒμΌμ—μ„œ 두가지 λ‹€λ₯Έ λ‚΄μš©μ΄ μˆ˜μ •λ˜μž‡μŒ

 

각각의 λΈŒλžœμΉ˜λ‘œλΆ€ν„° μˆ˜μ •ν•˜λ €λŠ” 사항이 λ³΄κΈ°μ‰½κ²Œ μ ν˜€μžˆλ‹€. 

 

μœ„μͺ½μ˜ λͺ…λ Ή λ²„νŠΌμ„ 눌러 ν•΄κ²°ν•˜κ±°λ‚˜ 본인이 직접 νŒŒμΌμ„ μˆ˜μ •ν•˜λ©΄ λœλ‹€.

 

μ€‘μš”ν•œ 것은 μ–΄λŠ μͺ½μ΄ λ˜μ—ˆλ“  μˆ˜λ™μœΌλ‘œ ν•΄κ²°ν•΄μ•Όν•œλ‹€λŠ” 것!

 

'accept both changes'λ₯Ό 눌러 두가지 λ‚΄μš© λ‹€ μΆ”κ°€ν•΄μ£Όμ—ˆλ‹€.

 

이후 λ‹€μ‹œ μ†ŒμŠ€νŠΈλ¦¬μ—μ„œ ν•΄λ‹Ή νŒŒμΌμ„ μŠ€ν…Œμ΄μ§€μ— 올리고 μ»€λ°‹ν•˜λ©΄λœλ‹€.

 

λ¨Έμ§€λ₯Ό μ§„ν–‰ν•˜λ©΄ 컀밋 λ©˜νŠΈκ°€ μžλ™μƒμ„±λ¨

 

 

이제 κ²°κ³Όλ₯Ό 보면 λΈŒλžœμΉ˜κ°€ ν•˜λ‚˜λ‘œ λ³‘ν•©λ˜μ—ˆλ‹€.

λ¨Έμ§€ 성곡!

 

 

λ³‘ν•©λœ μ‹œμ μ—μ„œ version2 λΈŒλžœμΉ˜λŠ” ν•„μš”μ—†μœΌλ‹ˆκΉ μ§€μ›Œμ£Όλ„λ‘ ν•˜μž.

version2  브랜치 μ‚­μ œ / 쒌츑 브랜치 νƒ­μ—μ„œ 우클릭 ν›„ μ‚­μ œ

 

 

 

 

 

 

 

 

πŸ˜Žμ΄λ²ˆμ—” λ‹€λ₯Έ 상황을 ν•΄κ²°ν•΄ 보도둝 ν•˜μž.

 

ν˜„μž¬ main 브랜치의 μ΅œμ‹  μ»€λ°‹μ—μ„œ version3와 version4 브랜치λ₯Ό μƒμ„±ν•˜κ³ 

 

version4 λΈŒλžœμΉ˜μ—μ„œ hello.md에 λ‚΄μš©μ„ μΆ”κ°€ν•˜κ³  ν•œ 번 컀밋을 ν•˜μ˜€λ‹€. (version3은 변경사항이 μ „ν˜€μ—†λŠ” μƒνƒœ)

 

좩돌이 μ•ˆλ‚˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ?

 

 

version3 κ°€ 체크아웃 된 μƒνƒœμ—μ„œ μƒˆλ‘œμš΄ νŒŒμΌμ„ λ§Œλ“€μ–΄μ„œ μž‘μ—…μ„ ν•œλ‹€.

verson3.md 파일 생성

 

 

ν•΄λ‹Ή 변경사항을 version3μ—μ„œ μ»€λ°‹ν•˜κ³ 

 

 

 

컀밋이 μ§„ν–‰λœ μƒν™©μ—μ„œ 

main을 μ€‘μ‹¬μœΌλ‘œ version3, version4 λΆ„κΈ°λ˜μžˆμŒ

 

 

 

main을 μ²΄ν¬μ•„μ›ƒν•˜κ³  version4, versoin3λ₯Ό λ³‘ν•©ν•˜κ²Œλ˜λ©΄ ν•΄κ²°!

 

λ‹€λ₯Έ νŒŒμΌμ„ μˆ˜μ •ν•œκ±°λ‹ˆκΉ μΆ©λŒμ•ˆμƒκΉ€

사싀 이건 λ­”μ†Œλ¦°μ§€ λͺ¨λ₯΄κ²ŸμŒ λ­˜ν•˜κ²Ÿλ‹€λŠ”κ±°μ§€?

728x90