[Github] Githubλ‘ νμ νλ λ°©λ² - repo μμ± μ ν μΌ (feat. λλ²μ§Έ νλ‘μ νΈ νκ³ )
μ ν λ벨λ‘νΌ μμΉ΄λ°λ―Έμμ μ§νν λλ²μ§Έ νλ‘μ νΈκ° λμ΄λ¬λ€. λλ²μ§Έ νλ‘μ νΈλ, μ λ§ λλκ² λ§μ νλ‘μ νΈμλ€. μ΄μ©λ€κ° λ΄κ° μ½κ°μ 리λ..?λ₯Ό νκ² λμλλ° κ·Έ κ³Όμ μμ λ΄κ° λͺ»νλ κ²μ κΈ°μ€μΌλ‘ μμΌλ‘λ μ΄λ»κ² ν΄μΌν μ§ μ 리ν΄λ³΄κΈ°λ‘ νλ€. μ½κ°,,, λμ€μ νΉμ λ λ΄κ° github κ΄λ¦¬λ₯Ό λ§‘κ² λμμλ, λΊ΄λ¨Ήμ§ μκ³ λͺ¨λ κ²μ νλ? νλ 체ν¬λ¦¬μ€νΈ!λ‘ νμ©λ ν¬μ€ν μ΄λ€.
π Github Repo μμ±νκΈ°
μ§μ§ μ΄μ©λ€κ° μ±κ°λ° 2κ°μμ°¨μΈ λ΄κ° 리λλ₯Ό λ§‘κ² λμ΄μ, Team repo κ΄λ¦¬λ μ΄μ©λ€κ°! λ΄κ° νκ² λμλ€. Gitμ μ΄λ κ² μ λλ‘ μ²μ λ€λ€λ³΄λ κ²μ μ²μμ΄λΌ κ²λκΈ°λ νλ€. μλλ λ€λ₯ΌκΉ μμλ 첫 λ¨κ³λΆν° λ΄κ° μ€μλ₯Ό μ μ§λ λ€.
μ΄λ²μ λ΄κ° μ€μνλ λΆλΆμ λ°λ‘ repo μμ± λ¨κ³μμ .gitignore μ μμ±ν λλ€. βΆ λ¬΄μ¨ μΌμ΄ μμλμ§ λ³΄λ¬κ°κΈ°
.gitignoreμ μ΄λ€ ν€μλλ₯Ό λ£μ΄μΌ ν μ§ λͺ°λΌμ κΈ°λ³ΈμΌλ‘ μ 곡νλ Swift ν€μλλ§ λ£μ΄μ gitignore μ μμ±νμλ€. κ·Έλ¦¬κ³ μ λμ€μ λ°κΏμΌμ§~ νκ³ λμ΄κ°κΈ°λνλ€ ν ,, ννλλ€. gitignore νμΌμ μ λλ‘ μμ±νμ§ μμΌλ©΄, λ‘컬μμ μ¬λΌκ°μ§ μμλ λ νμΌλ€μ΄ μ λΆ μ¬λΌκ°κ² λμ΄ conflictκ° μκΈ°κΈ° λλ¬Έμ μ€μνλ€.
βοΈ gitignore λ§λ€κΈ°
https://www.toptal.com/developers/gitignore
gitignoreμ μ ννμ΄μ§μμ κ°λ¨νκ² μμ± κ°λ₯νλ€. μνλ ν€μλλ₯Ό λ£μ΄μ createλ₯Ό λλ¬μ£Όλ©΄ μλμΌλ‘ μμ€μ½λλ₯Ό λ§λ€μ΄μ€λ€. ν΄λΉ μμ€μ½λλ₯Ό μ λΆ λ³΅μ¬ν΄μ .gitignoreνμΌμ μμ±ν΄μ£Όλ©΄ λλλ€. μμ±ν λ νμν ν€μλλ₯Ό μ μ΅νλμ.
< iOS project gitignore μΆμ² ν€μλ >
- swift
- xcode
- cocoapods
- Objective-C (μλ£μ΄λ λμ§λ§, μΆμ²νλ€κ³ νλ€!)
- MacOS λ μΆκ°ν΄μ£Όμ (μΈλ° μμ΄ μκΈ°λ DS_Store μ΄λμμμ΄ μ¬κΈ°μ μκΈ°λκ²μ΄λ€!)
βοΈ Issue Template λ§λ€κΈ°
issueκ° μ μ€μνμ§ λͺ°λκ³ , 첫λ²μ§Έ νλ‘μ νΈμμλ issue κΈ°λ₯μ μ¬μ©νμ§ μμλ€. νμ§λ§,, μ΄λ²μ μ μ€νκ² κ·Έ νμμ±μ λκΌλ€. κΉνλΈλ μ΄μλ²νΈκ° #29 μ²λΌ μ«μλ‘ νμ±μ΄λλλ°, commit message λ code review, comment μ΄λμλ #λ²νΈ λ§ μ°λ©΄ ν΄λΉ μ΄μμ μ°κ²°λλ€. νμ ν λ λ΄κ° μ΄λ€ κ°λ°μ μ§ννκ³ μλμ§, μ΄λ€κ² λ¬Έμ κ° λλμ§ λ± λμ μν©μ νμλ€μκ² κ³΅μ νκΈ° κ°μ₯ κ°λ¨ν λ°©λ²μΈκ² κ°μλ€.
issueλ₯Ό μ λλ‘ μ¬μ©ν΄λ³΄κ³ μΆμ΄μ issue ν νλ¦Ώμ λ§λ€μλ€.
νμ§λ§ μ΄λ² νλ‘μ νΈμμ, Issueλ₯Ό μ νμ©νκ³ μΆμμ§λ§, μμ¬λ§νΌ μ λμ§ μμλ€. μ무λλ μ΄μ μμ±μ λν κ·μΉμ μ νκ³ λμ΄κ°μ§ μμμ μΈ κ² κ°μλ€.
π Issue κ·μΉ μ νκΈ°
μ΄μ κ·μΉμ μ΄λ»κ² μ ν΄μΌν κΉ, μΌλ¨ μ°λ¦¬ ν μ΄μλ₯Ό 보면 μ 리λμ΄μμ§ μμ μ λͺ© μ€νμΌ, κ·Έλ¦¬κ³ λ¬΄μλΉν λΌλ²¨μ¬μ©μ΄ λ¬Έμ μλ€. μ§κΈμ λ΄κ° μ λͺ©μ μΌκ΄λκ² λ€ μ 리ν΄λμμ§λ§,,,μΌκ΄λμ§ μμ λλμ΄λκΉ?
1. μ λͺ© -μ λͺ©μ μλ ν€μλλ‘ ν΅μΌνλ©΄ μ’μ κ² κ°λ€.
- [Add] UI button ꡬν
- [Feat] UI button μ μ₯ κΈ°λ₯ μΆκ°
- [Bug] λ²νΌ λλ₯΄λ©΄ μκΉ μλ°λλ λ²κ·Έ
- [Refactor] μ½λ 리ν©ν λ§
- [Chore] settingκ³Ό κ΄λ ¨ν λ¬Έμ
μ°λ¦¬ νμ μ΄μ λͺ©λ‘μ΄λ€. μ λͺ©μ μ΄λ°μμΌλ‘ ν΅μΌν΄λ¨λ€. (μν νμ μ΄μ ν¬νλ¦Ώμ λ² κΌλΉ γ γ ) νμ§λ§ μ΄λ€κ±΄ [Bug] μ΄κ³ , μ΄λ€κ±΄ [Fix]μ΄λ€. μ΄λ° ν€μλλ₯Ό ν΅μΌνλ κ·μΉμ μ νμΌλ©΄ λ κΉλν μ λͺ©ν΅μΌμ΄ λμ κ² κ°λ€. κ·Έλ¦¬κ³ ,,, μ΄λ²μ μλ 40κ°μ λμ μ΄μμ μ λͺ©μ λͺ¨λ λ΄κ° μμ ν΄μ λ°κΏ¨λλ° μ΄λ° μΌλ μκΈ°μ§ μκ² μ§.
2. λΌλ²¨ - λΌλ²¨λ μ΄λ κ² λ§λ€μ΄λ³΄μ
- View μ΄λ¦
- νμ μ΄λ¦
- UI Design
- Bug
- νμμ chore μ΄λ docs, setting λ±
μ°λ¦¬ νμ λΌλ²¨μ λλ체 viewλ₯Ό κΈ°μ€μΌλ‘ λλ건μ§, ν€μλλ‘ λλκ±΄μ§ μ΄ν΄κ° λμ§ μλλ€. (μ€μ λ‘ λ©ν λΆκ» μ΄λ€ κΈ°μ€μΌλ‘ λλκ±°λκ³ μ§λ¬Έμ΄ λ€μ΄μ€κΈ°λ νλ€.) ListViewλ μλ λ·°μΈλ°, λλ체 λλ©°,, pinμ λ£μκ²λ μκ³ μλ£μκ²λμκ³ . 체κ³κ° μ μ‘νμμ§ μμλ€. λ€μλΆν°λ λ μμμ²λΌ κ·μΉκ³Ό λΌλ²¨μ λͺ¨λ μ νκ³ μμν΄μΌμ§,,
βοΈ Branch κ·μΉ μ νκΈ°
develop
feat/54-mainview-ui
μ²μμ λΈλμΉ μ΄λ»κ² νμΌν μ§ λͺ°λΌμ μλμ²λΌ ν μλλ°, λ νΉν λΈλμΉ μ΄λ¦μ΄λΌκ³ κ·Έλ¬λ€ ν¬ν¬ν¬ π€ κ·Έλμ λ€λ€ λ³΄ν΅ μ¬μ©νλ€λ λ°©μμΈ μ λ°©μμ²λΌ λ°κΏλ³΄μ... κ·Έλ¦¬κ³ λΈλμΉλ λ°λ‘λ°λ‘ μμ νμ μ§κΈ λ¨μμλ λΈλμΉλ§ λͺκ°μΌ λλ체..
βοΈ PR Template λ§λ€κΈ°
μ΄λ κ² λ―Έλ¦¬λ―Έλ¦¬ PR ν¬νλ¦Ώμ λ§λ€μ! ν νλ¦Ώμ setting νμμ λ§λ€μ΄λ λκ³ , .github ν΄λ λ΄ μμ λ§λ€μ΄λ λλ€. (νλ‘μ νΈ μμ±νλ©΄ κ°μ₯ μλ¨μ λ¨λ κ·Έ .github ν΄λ)
λλ μ²μμ μ΄μν¬νλ¦Ώλ§ λ§λ€μ΄μ μλμ²λΌ PR λ΄μ©μ΄ ν΅μΌλμ§ μκ³ μ κ°κ°μΈ μ¬ν(?)κ° λ°μνμλ€. μ΄λ°κ±Έ λ§κ³ λμΌν ννμ prμ μμ±νκ³ λ¦¬λ·°λ°μ!!
βοΈ PR κ·μΉ λ§λ€κΈ°
μ°λ¦¬νμ λ¬Έμ μ€ νλλ, λ°λ‘ μ½λ리뷰λ₯Ό νμ§ μλλ€λ μ μ΄μλ€. κ·Έλμ νμλ€λΌλ¦¬μ μ 무곡μ κ° λλκ³ ,,, μ½λ ν΅μΌμ΄ μλλ€λ κ±°..?
κ·Έλ¦¬κ³ λνλμ κ°μ₯ν° λ¬Έμ λ, pr μ μ¬λ¦¬κ³ , λ¦¬λ·°κ° μ΄λ£¨μ΄μ§μ§ μμ mergeλλ μλκ° λλ Έλ€. κ·Έλμ,, νλ²μ pr 10κ°μ λκ° open λμ΄μμκ³ κ²°κ΅.....μμ²λ conflictκ° μ겨μ xcodeκ° μμ μ΄λ¦¬μ§ μλ μ¬νκΉμ§ λ°μνλ€. μΈκ³ μΆμλ€ ννν. κ·Έλμ νΉμ λ€μ ννλ λ λ΄κ° ,, github κ΄λ¦¬λ₯Ό λ΄λΉνλ€λ©΄ κΌ νκ³ μΆμκ² pr κ·μΉ μ νλκ²μ΄λ€. μλμ²λΌ μ νλ©΄ λ κ² κ°λ€.
- PR μ¬λ¦¬λ©΄ νμλ€μκ² κ³΅μ
- ν루 맀μΌλ§€μΌ μ¬λΌμ¨ PRμ λν΄μ μ½λ리뷰 λ¨κΈ°κΈ°
- PRμ open λκ³ 36μκ° μ΄λ΄λ‘ νμ 2λͺ μ΄μμ approveλ₯Ό λ°μμΌνκ³
- 2λͺ μ΄μμ approve κ° μμ κ²½μ° λ¨Έμ§ κ°λ₯!
+ μ½λ리뷰 κ·μΉ
λ μ½λ리뷰μ λν΄μ μκ°ν΄λ³΄μλ€. μ½λ리뷰λ₯Ό μ΄λ»κ² νλ©΄ μ ν μ μμκΉ μκ°νλ€κ° λ± ν¬μλ¬λμ pr 리뷰 κ·μΉμ λ°κ²¬νλ€.
https://blog.banksalad.com/tech/banksalad-code-review-culture/
μ½λ리뷰λ₯Ό νλ€λ³΄λ©΄, λκ² μ¬μν κ²μ κ³ μ³λ¬λΌκ³ λ§ν λλ μκ³ , 무쑰건 κ³ μ³μΌν λκ° μλ€. μ΄κ²μ 1~5 μ«μλ₯Ό μ΄μ©ν΄μ 리뷰νλ€λ μ μ΄ μ’μλ€! λ€μ 리뷰μμλ, 무쑰건 μ΄ κ·μΉμ λ°λΌλ³΄λλ‘ νμ.
- P1 ) κΌ λ°μν΄μ£ΌμΈμ.
- P2 ) μ κ·Ήμ μΌλ‘ κ³ λ €ν΄μ£ΌμΈμ.
- P3 ) μ¬λ§νλ©΄ λ°μν΄μ£ΌμΈμ (comment)
- P4 ) λ°μν΄λ μ’κ³ , μλμ΄λ μ’μμ. (approve)
- P5 ) κ·Έλ₯ μ¬μν μ견μ λλ€. (approve)
κ·Έλ¦¬κ³ μ½λ리뷰λ₯Ό λ°μμ λ, μμ νκ³ μμ λ¨μλ‘ μ»€λ°μ λ¨κΈ°κ³ μ»€λ° λ²νΈλ₯Ό λ΅λ³μΌλ‘ λ¨κ²¨μ£Όμ.
π μ½λ 컨벀μ μ νκΈ°
μ½λ 컨벀μ μ μ νμ§ μμλλ 리뷰μμ 'μ¬κΈ°μλ μν°ν΄λ¬λΌ', 'μν°λ₯Όμ§μλ¬λΌ' 'λμ΄μ°κΈ°λ₯Ό μ§μλ¬λΌ'.. λΌλ 리뷰λ₯Ό μμ²λκ² νλ λλ₯Ό λ°κ²¬ν μ μμλ€. μμΌκΉ? κ³ λ―Όν΄λ³΄λ,,,, μ½λλ₯Ό μμ±νκΈ°μ μ μ½λ컨벀μ μ μμ νλλΌ,,,, ν΄,,, κ·Έλλ lint κ° μμ΄μ λμΆ© κ·μΉμ΄ μ ν΄μ§μ€ μμλλ° μ¬μν κ²λ€μ΄ μ ν΄μ§μ§ μμμ μ΄λ₯Ό μμ νλλ°λ μκ°μ μμλκ² κ°λ€.
λ€μ νλ‘μ νΈμμλ μ½λ 컨벀μ μ κΌ μ νκ³ μμν΄μΌκ² λ€. λ¦°νΈκ° μμ΄λ, μ¬κΈ°μ μ‘μμ£Όμ§ λͺ»νλ μ¬μν κ²λ€μ΄ λκ² λ§μλ€. μλ κ·Έλ₯ μ€μ§κ² λ§λ€! λ€μ νλ‘μ νΈλλ, μλ κΈμ μ°Έκ³ ν΄μ μ½λ 컨벀μ μ μ νκ³ μμν΄μΌκ² λ€. μλμλ λ΄κ° λ μ΄λ² νμμ μ΄λμλΆν° λ¬Έμ κ° λμμκΉ μ°Ύμ보λ€κ° μ°Ύμ 'μ€νμΌμμ΄μ μ½λ 컨벀μ 'μ΄λ€. μ΄κ²μ μ°Έκ³ ν΄μ μ μ©μμΌλ΄μΌκ²λ€!
https://github.com/StyleShare/swift-style-guide
π Commit Message κ·μΉ μ νκΈ°
μ»€λ° λ©μΈμ§ κ·μΉμ μ νκΈ΄ νλλ°, μ무λ°μ λ°μμ μ νλ€λ³΄λκΉ μ΄λ€ UIνλ©΄ ꡬμ±μ addλ‘ λμ΄μλλ°, μ΄λ€κ±΄ featμΌλ‘ λμ΄μκ³ μ΄λ°μμΌλ‘ μ λλ‘ μ²΄κ³κ° μ‘νμμ§ μμλ€. κ·Έλμ μ°λ¦¬μκ² κΌ νμν commit messageλ§ μ λλ‘ μ μνκ³ μ²΄κ³λ₯Ό μ νκ³ λμ΄κ°λ κ²μ΄ μ€μνλ€κ³ μκ°λμλ€.
κ·Έλ¦¬κ³ μ»€λ°λ©μΈμ§μ μ΄μλ²νΈλ₯Ό λ¨κΈ°λ©΄, ν΄λΉ μ΄μμ 컀λ°λ΄μμ΄ μλμΌλ‘ λ¨κ²¨μ§κ² λλ€. μ΄ κΈ°λ₯λ μ κ·Ήμ μΌλ‘ νμ©νμ΄μΌ νλλ° κ·Έλ μ§ λͺ»ν΄μ μμ¬μ λ€.
commit message κ·μΉμ μ΄λ κ² μ ν΄λ³΄κ³ μμνμ.