branch κΈ°λŠ₯

2023. 5. 11. 15:31ㆍgit

branch 

μ—¬λŸ¬ κ°œλ°œμžλ“€μ΄ λ™μ‹œμ— λ‹€μ–‘ν•œ μž‘μ—…μ„ ν•  수 있게 λ§Œλ“€μ–΄ μ£ΌλŠ” κΈ°λŠ₯

각자 독립적인 μž‘μ—… μ €μž₯μ†Œ μ•ˆμ—μ„œ λ§ˆμŒλŒ€λ‘œ μ†ŒμŠ€μ½”λ“œλ₯Ό λ³€κ²½ κ°€λŠ₯.

λΆ„λ¦¬λœ μž‘μ—… μ˜μ—­μ—μ„œ λ³€κ²½λœ λ‚΄μš©μ€ λ‚˜μ€‘μ— μ›λž˜μ˜ 버전과 λΉ„κ΅ν•΄μ„œ ν•˜λ‚˜μ˜ μƒˆλ‘œμš΄ 버전 생성 κ°€λŠ₯

μ—¬λŸ¬ λͺ…μ΄μ„œ λ™μ‹œμ— μž‘μ—…μ„ ν•  λ•Œμ— λ‹€λ₯Έ μ‚¬λžŒμ˜ μž‘μ—…μ— 영ν–₯을 μ£Όκ±°λ‚˜ λ°›μ§€ μ•Šλ„λ‘, λ¨Όμ € 메인 λΈŒλžœμΉ˜μ—μ„œ μžμ‹ μ˜ μž‘μ—… μ „μš© 브랜치λ₯Ό λ§Œλ“­λ‹ˆλ‹€. 그리고 각자 μž‘μ—…μ„ μ§„ν–‰ν•œ ν›„, μž‘μ—…μ΄ λλ‚œ μ‚¬λžŒμ€ 메인 λΈŒλžœμΉ˜μ— μžμ‹ μ˜ 브랜치의 λ³€κ²½ 사항을 적용

μ €μž₯μ†Œλ₯Ό 처음 λ§Œλ“€λ©΄, Git은 λ°”λ‘œ 'master' λΌλŠ” μ΄λ¦„μ˜ 브랜치λ₯Ό λ§Œλ“€μ–΄ 쀌.

이 μ €μž₯μ†Œμ— μƒˆλ‘œμš΄ νŒŒμΌμ„ μΆ”κ°€ ν•œλ‹€κ±°λ‚˜ μΆ”κ°€ν•œ 파일의 λ‚΄μš©μ„ λ³€κ²½ν•˜μ—¬ κ·Έ λ‚΄μš©μ„ μ €μž₯(컀밋, Commit)ν•˜λŠ” 것은 λͺ¨λ‘ 'master' λΌλŠ” μ΄λ¦„μ˜ 브랜치λ₯Ό 톡해 처리

'master'κ°€ μ•„λ‹Œ 또 λ‹€λ₯Έ μƒˆλ‘œμš΄ 브랜치λ₯Ό λ§Œλ“€μ–΄μ„œ μ‚¬μš© μ„ μ–Έ(체크아웃, checkout)ν•˜μ§€ μ•ŠλŠ” 이상, λͺ¨λ“  μž‘μ—…μ€ 'master' λΈŒλžœμΉ˜μ—μ„œ 이루어짐.

 

 

git의 원격 μ €μž₯μ†Œμ— λ“€μ–΄κ°€λ©΄ branch 확인 κ°€λŠ₯

 

branch κ΄€λ ¨ λͺ…λ Ήμ–΄

 

- git branch :  ν˜„μž¬ 브랜치 λͺ©λ‘ λ³΄μ—¬μ€Œ, λΈŒλžœμΉ˜κ°€ μ—¬λŸ¬κ°œμΈ 경우 ν˜„μž¬ μ‚¬μš©μ€‘μΈ 브랜치 μ•žμ— * λΆ™μŒ.

 

- git branch μƒˆλ‘œ 생성할 branchλͺ… : μƒˆλ‘œμš΄ branch 생성

branchλ₯Ό μƒμ„±ν•˜λ©΄ μž‘μ—…λ¬Όμ΄ λ³΅μ‚¬λ˜μ–΄ μƒˆλ‘œμš΄ 버전이 μƒκΈ°λŠ” 것!

- git checkout μ‚¬μš©ν•  브랜치λͺ… : ν˜„μž¬ μ‚¬μš© 브랜치 이동

μŠ€ν”„λ§ ν”„λ‘œμ νŠΈ λͺ©λ‘ μ•ˆμ—μ„œλ„ branch 확인 κ°€λŠ₯

- git checkout-b μƒˆλ‘œ 생성할 브랜치λͺ… : 브랜치λ₯Ό μƒμ„±ν•˜κ³  μ‚¬μš© 브랜치둜 λ°”λ‘œ 이동

κΉƒ νŽ„μŠ€νŽ™ν‹°λΈŒλ‘œ μ΄λ™ν•˜λ©΄ ν•˜λ‹¨μ˜ historyμ—μ„œλ„ ν˜„μž¬ μ‚¬μš©ν•˜λŠ” branch와 μƒμ„±λœ branch λͺ©λ‘ 확인 κ°€λŠ₯ 

 

 

μ‹€μ œλ‘œ 독립적인 μ €μž₯μ†Œλ₯Ό μ‚¬μš©ν•˜λŠ”μ§€ ν™•μΈν•΄λ³΄λŠ” μž‘μ—…

브랜치λ₯Ό test1으둜 이동

μž‘μ—…

TestController에 λ©”μ†Œλ“œ ν•˜λ‚˜ 생성 및 test.html 생성

μž‘μ—… μ™„λ£Œ ν›„ git add . λͺ…λ Ήμ–΄λ‘œ μž₯λ°”κ΅¬λ‹ˆμ— λ‹΄κ³  μ €μž₯μ†Œμ— 컀밋

 

test2둜 브랜치 이동

ν”„λ‘œμ νŠΈ 보면 test1μ—μ„œ μž‘μ—…ν•œ μž‘μ—…λ¬Ό μ—†λŠ” 것 확인 κ°€λŠ₯!

 

test2 branchμ—μ„œ μž‘μ—…

test2.html 생성 ν›„ 컀밋

 

브랜치 병합

dev λΈŒλžœμΉ˜μ— test1, test2 브랜치 병합

dev 브랜치둜 이동

- git merge 병합할 branchλͺ… : ν•΄λ‹Ή branch에 각각의 branchμ—μ„œ μ €μž₯ν•œ 것듀 병합

 

λ³‘ν•©κΉŒμ§€ λ¬Έμ œμ—†μ΄ 됐닀면 μ΅œμ’…μ μœΌλ‘œ master λΈŒλžœμΉ˜μ— 적용.

master 브랜치둜 이동

dev branch λ³‘ν•©ν•˜λ©΄ μ΅œμ’…μ μœΌλ‘œ master에 λͺ¨λ“  μž‘μ—…λ¬Ό 병합됨!

 

μ΅œμ’… ν”„λ‘œμ νŠΈ git에 μ—…λ‘œλ“œ

- git push origin master : κΉƒμ˜ master branch의 원격저μž₯μ†Œμ— μ—…λ‘œλ“œ

 

git 원격 μ €μž₯μ†Œ 확인해보면 μ—…λ‘œλ“œ 확인 κ°€λŠ₯.

 

 

각각의 μ €μž₯μ†Œμ— μ΅œμ’… μž‘μ—…λ¬Ό μ €μž₯된 master 브랜치 λ³‘ν•©ν•˜μ—¬ λͺ¨λ“  브랜치 μ΅œμ‹  μ—…λ°μ΄νŠΈ

test1 브랜치둜 이동

λ§ˆμŠ€ν„° 브랜치 병합

test2 브랜치 이동

λ§ˆμŠ€ν„°λΈŒλžœμΉ˜ 병합

ν˜„μž¬κΉŒμ§€ test1, test2, dev 브랜치 μ΅œμ‹  μ†ŒμŠ€ λ°˜μ˜λ˜μ–΄ μ—…λ°μ΄νŠΈ 된 μƒνƒœ!

μž‘μ—… μ™„λ£Œλœ test1, test2 λΈŒλžœμΉ˜λ“€μ€ μ‚­μ œ

- git branch -d μ‚­μ œν•  브랜치λͺ… : 브랜치 μ‚­μ œ

 

ν•΄λ‹Ή 브랜치 μ‚­μ œ ν›„ λ™μΌν•œ μ΄λ¦„μœΌλ‘œ 브랜치 μƒμ„±ν•΄μ„œ λ‹€μ‹œ μž‘μ—…

 

git μž‘μ—… μˆœμ„œ
git branch μ‚¬μš©ν• λΈŒλžœμΉ˜λͺ…(test1)
git checkout μ‚¬μš©ν• λΈŒλžœμΉ˜λͺ…(test1)
μž‘μ—… ν›„
git add .
git commit -m "μ»€λ°‹λ©”μ‹œμ§€"
git checkout dev
git marge λ³‘ν•©ν• λΈŒλžœμΉ˜λͺ…(test1)
git push origin dev

git checkout master
git merge dev
git push origin master > λŒ€ν‘œ ν•œλͺ…λ§Œ

git branch -d μ‚­μ œν•  브랜치λͺ…(test1) 

**λ‹€μ‹œ μž‘μ—…ν•  λ•Œ

devμ—μ„œ μ΅œμ‹  μ†ŒμŠ€ λ‚΄λ € λ°›μ•„μ„œ
μ‚­μ œν•œ 브랜치λͺ…κ³Ό λ™μΌν•˜κ²Œ μƒμ„±ν•˜μ—¬ λ‹€μ‹œ μž‘μ—…

 

 

κΉƒ μ—…λ‘œλ“œ 좩돌

test2 λΈŒλžœμΉ˜μ—μ„œ λ‹€μ‹œ μž‘μ—…

TestController에 λ©”μ†Œλ“œ 생성.

μ €μž₯μ†Œμ— 컀밋!

λ‹€λ₯Έ μž‘μ—…μžκ°€(test1 λΈŒλžœμΉ˜μ—μ„œ) TestControllerμ—μ„œ λ˜‘κ°™μ΄ μž‘μ—…

μž‘μ—… ν›„ 컀밋 

 

dev 브랜치둜 μ΄λ™ν•˜μ—¬ test1 브랜치 병합

test2도 병합

devμ—μ„œ TestController보면 잘 병합됨.

좩돌 X

같은 파일의 같은 쀄을 κ±΄λ“œλ¦¬μ§€ μ•Šμ€ κ²½μš°μ—λŠ” 좩돌 X

 

 

병합 좩돌 μƒκΈ°λŠ” 경우

test1 λΈŒλžœμΉ˜μ—μ„œ 인덱슀 파일 9번째 μ€„μ—μ„œ μž‘μ—…

컀밋

 

test2 λΈŒλžœμΉ˜μ—μ„œλ„ μž‘μ—…

test1 λΈŒλžœμΉ˜μ™€ 같은 인덱슀 파일 9번째 쀄 μž‘μ—… ν›„ 컀밋

 

 

dev둜 μ΄λ™ν•˜μ—¬ test1, test2 브랜치 병합

test1 브랜치 μ„±κ³΅μ μœΌλ‘œ 병합됨

test2 브랜치 병합 였λ₯˜!

(λ¨Όμ € mergeν•œ 것은 문제 없이 병합, 늦게 λ³‘ν•©ν•œ λΈŒλžœμΉ˜λŠ” 좩돌 λ°œμƒ)

인덱슀 파일 확인해보면 μ•„λž˜μ²˜λŸΌ 좩돌 λ‚΄μš© λ³΄μž„.

좩돌 μˆ˜μ •ν•˜λŠ” 법

좩돌 λ‚΄μš© μ§€μš°κ³  μˆ˜μ •

μˆ˜μ • ν›„ 컀밋

λͺ…λ Ήμ–΄ μ‹€ν–‰ ν›„ 좩돌 사라진 것 확인 κ°€λŠ₯!

'git' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

git - ν”„λ‘œμ νŠΈ μ—…λ‘œλ“œ  (0) 2023.05.10
κΉƒ(git) - ν˜•μƒκ΄€λ¦¬λ„κ΅¬  (0) 2023.05.09