λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
"곡뢀" π‘Ÿπ‘’π‘π‘œπ‘Ÿπ‘‘/π‘†π‘†π΄πΉπ‘Œ

[TIL] ν”„λ‘œμ νŠΈ μ‹œμž‘ μ „ git λͺ…λ Ήμ–΄ μ •λ¦¬ν•˜κΈ°

by ΰ·† Yoni ΰ·† 2023. 1. 14.
728x90

μ‹Έν”Ό 2학기에 λ“€μ–΄μ˜¨ ν˜„μž¬
첫 ν”„λ‘œμ νŠΈ 1μ£Όμ°¨λ₯Ό 진행 쀑이닀.
μš°λ¦¬νŒ€μ€ ν”„λ‘ νŠΈμ—”λ“œ 개발자 3λͺ…,
λ°±μ—”λ“œ 개발자 3λͺ…
μ΄λ ‡κ²Œ 총 6인으둜 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

ν˜„μž¬λŠ” ν”„λ‘œμ νŠΈ κΈ°νšλ‹¨κ³„μ— μžˆλŠ”λ°
κΈ°νšν•˜λŠ” 게 μ € 머리아프고 μ–΄λ €μš΄ 것 κ°™λ‹€...
νšŒμ˜ν•˜κ³  의견 μ‘°μœ¨ν•΄κ°€λ‹€λ³΄λ©΄ ν•˜λ£¨ λšλ”±..!!

μ’€μžˆμœΌλ©΄ 개발 단계에 접어듀텐데
κ·Έ 전에 ν˜‘μ—…μ„ μœ„ν•΄ μ‚¬μš©ν• 
git의 λͺ…령어듀을 정리해보면 쒋을 것 κ°™μ•„
μš”λ‘œμ½”λ‘¬ 포슀트λ₯Ό 올리게 λ˜μ—ˆλ‹€.

 

gitμ΄λž€?


git은 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•  λ•Œ μ†ŒμŠ€μ½”λ“œλ₯Ό
효과적으둜 관리할 수 있게 ν•΄μ£ΌλŠ”
ν˜•μƒ 관리 도ꡬ 쀑 ν•˜λ‚˜μ΄λ‹€.

이 git을 μ‚¬μš©ν•˜λ©΄ 같은 μ €μž₯μ†Œμ—μ„œ
μ—¬λŸΏμ΄ λ™μ‹œμ— μž‘μ—…ν•˜λŠ” 병렬 개발이 κ°€λŠ₯ν•˜λ‹€.

 

Branch(브랜치)


git을 μ‚¬μš©ν•˜λ‹€ 보면
브랜치(Branch)λΌλŠ” 것이 μžˆλŠ”λ°
μ΄λŠ” λ…λ¦½μ μœΌλ‘œ μ–΄λ–€ μž‘μ—…μ„ μ§„ν–‰ν•˜κΈ° μœ„ν•œ
κ°œλ…μœΌλ‘œ 보면 λœλ‹€.

각 λΈŒλžœμΉ˜μ—μ„œλŠ” μ„œλ‘œ 영ν–₯을 받지 μ•ŠκΈ° λ•Œλ¬Έμ—
μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— 진행이 κ°€λŠ₯ν•˜λ‹€.
μ΄λ ‡κ²Œ μ—¬λŸ¬ κ³³μ—μ„œ μ§„ν–‰ν•œ μž‘μ—…λ“€μ„
브랜치 병합(Merge)λ₯Ό 톡해
μž‘μ—…ν•œ λ‚΄μš©μ„ ν•˜λ‚˜μ˜ 브랜치둜 λͺ¨μ„ 수 μžˆλ‹€.

 

Branch μ „λž΅

 

μ—¬λŸ¬ λͺ…μ˜ κ°œλ°œμžκ°€
1개의 μ €μž₯μ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” ν™˜κ²½μ—μ„œ
효과적으둜 ν™œμš©ν•˜κΈ° μœ„ν•΄ λ‚˜μ˜¨ κ°œλ…μ΄λ‹€.

브랜치 생성, 병합 λ“±μ˜ git ꡬ쑰λ₯Ό ν™œμš©ν•΄
보닀 효율적으둜 μ†ŒμŠ€μ½”λ“œλ₯Ό κ΄€λ¦¬ν•˜κ³ 
ν˜‘μ—…μ„ μ›ν™œν•˜κ²Œ ν•  수 μžˆλ„λ‘ 도움을 μ€€λ‹€.

λŒ€ν‘œμ μΈ 브랜치 μ „λž΅μ—λŠ”
Git flow, Github flow, Gitlab flowκ°€ μžˆλ‹€.

μ—¬κΈ°μ„œ λŒ€ν‘œμ‚Όμ•„ Git flow에 λŒ€ν•΄ 적어보겠닀.

 

Git flow


Git flowμ—λŠ” 항상 μœ μ§€λ˜λŠ” 메인 λΈŒλžœμΉ˜λ“€
master, develop 브랜치,
그리고
일정 κΈ°κ°„ λ™μ•ˆλ§Œ μœ μ§€λ˜λŠ” 보쑰 λΈŒλžœμΉ˜λ“€
feature, release, hotfix
μ΄λ ‡κ²Œ 5가지 μ’…λ₯˜μ˜ λΈŒλžœμΉ˜κ°€ μ‘΄μž¬ν•œλ‹€.

브랜치 이름 브랜치 μ„€λͺ…
master κ°€μž₯ 쀑심이 λ˜λŠ” 브랜치 쀑 ν•˜λ‚˜λ‘œ ν˜„μž¬ 배포 κ°€λŠ₯ν•œ μƒνƒœλ§Œμ„ κ΄€λ¦¬ν•˜λŠ” λΈŒλžœμΉ˜μ΄λ‹€.
develop λ‹€μŒ μΆœμ‹œ 버전을 κ°œλ°œν•˜λŠ” 브랜치
feature μΆ”κ°€ κΈ°λŠ₯을 κ°œλ°œν•˜λŠ” 브랜치
release 배포λ₯Ό μœ„ν•΄ μ΅œμ’…μ μœΌλ‘œ 버그λ₯Ό μˆ˜μ •ν•˜λŠ” 브랜치
hotfix μΆœμ‹œ λ²„μ „μ—μ„œ λ°œμƒν•œ 버그λ₯Ό κΈ΄κΈ‰ν•˜κ²Œ μˆ˜μ •ν•  ν•„μš”κ°€ μžˆμ„ λ•Œ master λΈŒλžœμΉ˜μ—μ„œ 뢄리해 μˆ˜μ •ν•˜λŠ” 브랜치

 

git λͺ…λ Ήμ–΄ λͺ¨μŒ

 

λͺ…λ Ήμ–΄ κΈ°λŠ₯
git init git ν•˜μœ„ 디렉토리 생성 (폴더λ₯Ό λ§Œλ“  ν›„, κ·Έ μ•ˆμ—μ„œ λͺ…λ Ή μ‹€ν–‰ → μƒˆλ‘œμš΄ git μ €μž₯μ†Œ 생성)
git clone [μ €μž₯μ†Œ 경둜] κΈ°μ‘΄ μ†ŒμŠ€ μ½”λ“œ λ‹€μš΄λ‘œλ“œ/볡제
git add <파일λͺ…> git add . or * 컀밋에 단일 파일의 λ³€κ²½ 사항 포함
컀밋에 λͺ¨λ“  파일의 λ³€κ²½ 사항 포함
git commit -m “컀밋 메세지” 컀밋 생성 (μ‹€μ œ 변경사항 ν™•μ •)
git status 파일 μƒνƒœ 확인
git branch 브랜치 λͺ©λ‘ 확인
git branch -b [브랜치 이름] 브랜치 생성→ 이동
git checkout [브랜치 이름] 브랜치 이동
git branch -d [브랜치 이름] 브랜치 μ‚­μ œ
git push [λ‘œμ»¬μ €μž₯μ†Œ 이름][브랜치 이름] 둜컬 μ €μž₯μ†Œμ˜ λ‚΄μš©μ—μ„œ μƒμ„±λœ 브랜치둜 μ»€λ°‹λœ λ‚΄μš©μ„ 원격 μ„œλ²„μ— μ—…λ‘œλ“œ
git pull [λ‘œμ»¬μ €μž₯μ†Œ 이름][브랜치 이름] 원격에 μ €μž₯된 git ν”„λ‘œμ νŠΈμ˜ ν˜„μž¬ μƒνƒœλ₯Ό λ‹€μš΄λ°›κ³  ν˜„μž¬ μœ„μΉ˜ν•œ 브랜치둜 병합
git log ν˜„μž¬ μœ„μΉ˜ν•œ 브랜치 컀밋 λ‚΄μš© 확인 및 μ‹λ³„μž λΆ€μ—¬
git fetch origin 원격에 μ €μž₯된 gitν”„λ‘œμ νŠΈμ˜ ν˜„ μƒνƒœλ₯Ό λ‹€μš΄λ‘œλ“œ
git stash 아직 λ§ˆλ¬΄λ¦¬ν•˜μ§€ μ•Šμ€ μž‘μ—…μ„ μŠ€νƒμ— μž μ‹œ μ €μž₯
git stash pop μŠ€νƒμ— μž μ‹œ μ €μž₯된 λ§ˆλ¬΄λ¦¬λ˜μ§€ μ•Šμ€ μž‘μ—…μ„ κΊΌλ‚΄μ˜΄
728x90

λŒ“κΈ€