์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Flutter
- designpattern
- ํ๋ก๊ทธ๋๋จธ์ค
- visionOS
- UIKit
- reactorkit
- CollectionView
- Swfit
- combine
- ๋ฐฑ์ค
- BFS
- realm
- TCA
- SwiftUI
- Kuring
- Xcode
- tableView
- raywenderlich
- BOJ
- node.js
- RxSwift
- Lv2
- MVVM
- rxcocoa
- XCTest
- ios
- SnapKit
- swift
- arkit
- ํจ์คํธ์บ ํผ์ค
- Today
- Total
lgvv98
[git] Git-flow ์ ๋ต๊ณผ ํ๋ก์ ํธ ์์(feat. Kuring) ๋ณธ๋ฌธ
[git] Git-flow ์ ๋ต๊ณผ ํ๋ก์ ํธ ์์(feat. Kuring)
๐ฅ ์บ๋ฟ๋งจ 2022. 6. 10. 13:29Git-flow ์ ๋ต๊ณผ ํ๋ก์ ํธ ์์(feat. Kuring)
โ Kuring์์ ์ฌ์ฉํ๋ Git-flow ๋ถ์๊ณผ Git-flow์ ๋ํด์ ๊ณต๋ถํ๋ฉฐ, Kuring์์ ๋ด๊ฐ ์ฌ์ฉํ๋ ์ปค๋ฐ ๊ท์น์ ์ ๋ฆฌํ๊ณ ์ ํฌ์คํ ํฉ๋๋ค.
ํ์๋ฅผ ์์ํ๊ธฐ์ ์์, ๋ฐ๋ก ํ์ ๋ด์ฉ๋ง ์ด์ผ๊ธฐ ํ๋๊ฒ ์๋๋ผ ๊ฐ๋ณ๊ฒ ์ค๋ชฐํก์ผ๋ก ์ฃผ๋ก ์์ํ๋๋ฐ ๋ด ํฌ์คํ ๋ ๊ฐ๋ณ๊ฒ ์๋ฌด๋ง์ด๋ ์ ์.์ต๊ทผ์ [1.2.0] ๋ฒ์ ์ดํ๋ก ๊ธฐ์กด์ UIKit์ผ๋ก ์์ฑ ๋ ์ฝ๋๋ฅผ SwiftUI๋ก ๋ณ๊ฒฝํ๋ฉด์ ์์ ์ ๊ณต์ ํ์ฌ ํ๋ ๋ฑ ํ์ํ ๋ถ๋ถ์ด ๋ง์๋๋ฐ, ๊น์ ๊ทธ๋ฅ ์์ฐ์ค๋ฝ๊ฒ ํ์ํ ๊ฒ๋ค๋ง ์ฐพ์์ ํ๋ค๋ณด๋ ๊ฐ์ด ์์ ํ๋ ๋ถ์ด ๊น ๊ด๋ฆฌ๋ฅผ ์ฃผ๋ก ๋งก์์ ํด์ฃผ์ จ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌด์๋ณด๋ค๋ ํ์ง์ ๋ถ์ด์ ์ ๋๋ถ์ ์ค์ ๋ก ์ ์ฉ๋๋ ๋ชจ๋ธ์ ์ฐ์ตํ๊ณ ๋น ๋ฅด๊ฒ ํก์ํ ์ ์์๋ ๊ฒ ๊ฐ๋ค. - ์ด๊ฑด ๊ฐ์ฌ์ ๋งโจ -
๋ฌผ๋ก ๊ฐ์ธ ๋ ํฌ์์ ์ํ์ฐฉ์ค๊ฐ ๋ง์๋ค
๊ทธ๋์ ์ด๋ฒ ๊ธฐํ์ ํ์คํ ์์๋๊ณ , ์ค์ค๋ก ๋ฆฌ๋ํ๋ ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ ์ํด์ ์ ๋๋ก ์ ๋ฆฌ๋ฅผ ํ๊ณ ์ ํจ!
[Kuring-iOS Version์ ๋ฐ๋ฅธ ์๋ก์ด ๋ด์ฉ] - ์ด๊ฑด ๊นจ์ ํ๋ณด
https://kuring.notion.site/kuring/iOS-eef51c986b7f4320b97424df3f4a5e3c
๐ฅ ๋ชฉ์ฐจ ๐ฅ
1. ์ฐ์ํ ํ์ ๋ค Git-flow ์ ๋ต์ ๋ํด์ ์์๋ณด๊ธฐ
2. Kuring์ Git-flow ์ ๋ต ๋ถ์ (์๊ท๋ชจ ํ์์์ Git-flow ์ ๋ต)
3. Git-flow ์ ๋ต์ ๊ฐ์ธ ๋ ํฌ์ ์ ์ฉํ๊ณ ์ฐ์ตํด๋ณด๊ธฐ
4. git ์ถฉ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ
โ 1. ์ฐ์ํ ํ์ ๋ค Git-flow ์ ๋ต์ ๋ํด์ ์์๋ณด๊ธฐ
์ฐ์ํ ํ์ ๋ค ๊ธฐ์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ Git-flow ์ ๋ต์ ๋ํด์ ๊ณต๋ถํด ๋ด ๋๋ค.
๊ธฐ์ ๋ธ๋ก๊ทธ๋ ํฌ์คํ ์ตํ๋จ์ ๋งํฌ๋ฅผ ๊ฑธ์ด๋์์ต๋๋ค.
๐ Git Repositiry ๊ตฌ์ฑ ์ดํด๋ณด๊ธฐ!
Repository๋ Upstream Remote Repository(์ดํ Upstream Repository)์ Origin Remote Repository(Origin Repository), Local Repository๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
Upstream Repository์ด๋ ๋ชจ๋ ๊ฐ๋ฐ์๋ค์ด ๊ณต์ ํ๋ ์ ์ฅ์๋ก ์ต์ ์์ค์ฝ๋๊ฐ ์ ์ฅ๋์ด ์๋ ์๊ฒฉ ์ ์ฅ์์ ๋๋ค.
Origin Repository๋ UpStream Repository๋ฅผ Forkํ ์๊ฒฉ ๊ฐ์ธ ์ ์ฅ์ ์ ๋๋ค. Local Repository๋ ๋ด ์ปดํจํฐ์ ์ ์ฅ๋์ด ์๋ ๊ฐ์ธ ์ ์ฅ์ ์ ๋๋ค.
์์ ๊ทธ๋ฆผ์ Git Repository ๊ตฌ์ฑ๊ณผ ์ํฌ ํ๋ก์ฐ์ ๋ํด์ ์ค๋ช ํ๊ณ ์์ต๋๋ค. Local Repository์์ ์์ ์ ์๋ฃํ ํ ์์ ๋ธ๋์น๋ฅผ Origin์ pushํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Github์์ Origin Repository์ Pushํ ๋ธ๋์น๋ฅผ mergeํ๋๋ก PR์ ์์ฑํ๊ณ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๊ฑฐ์น ํ mergeํฉ๋๋ค. ๋ค์ ์๋ก์ด ์์ ์ ์งํํ ๋, Local Repository์์ Upstream Repository๋ฅผ Pull ํฉ๋๋ค!
๐ Git-flow ์ ๋ต ์ดํด๋ณด๊ธฐ!
Git-flow๋ฅผ ์ฌ์ฉํ์ ๋ ์์ ์ ์ด๋ป๊ฒ ํ๋์ง ์ดํด๋ณด๊ธฐ ์ ์ ์ฐ์ Git-flow์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Git-flow์๋ 5๊ฐ์ง ์ข ๋ฅ์ ๋ธ๋์น๊ฐ ์กด์ฌํ๋น๋ค. ํญ์ ์ ์ง๋๋ ๋ฉ์ธ ๋ธ๋์น๋ค(main, develop)๊ณผ ์ผ์ ๊ธฐ๊ฐ ๋์๋ง ์ ์ง๋๋ ๋ณด์กฐ ๋ธ๋์น๋ค(feature, release, hotfix)๊ฐ ์์ต๋๋ค.
( * NOTE: master ๋ธ๋์น์ ์ด๋ฆ์ main์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. )
๐ main: ์ ํ์ผ๋ก ์ถ์๋ ์ ์๋ ๋ธ๋์น
๐ develop: ๋ค์ ์ถ์ ๋ฒ์ ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น
๐ feature: ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น
๐ release: ์ด๋ฒ ์ถ์ ๋ฒ์ ์ ์ค๋นํ๋ ๋ธ๋์น
๐ hotfix: ์ถ์ ๋ฒ์ ์์ ๋ฐ์ํ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๋ธ๋์น
๐ Git-flow๋ฅผ ์ค๋ช ํ๋ ๊ทธ๋ฆผ
์ ๊ทธ๋ฆผ์ ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ํ๋ฆ์ผ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฒ์์๋ main ๋ธ๋์น์ develop ๋ธ๋์น๊ฐ ์กด์ฌํฉ๋๋ค. ๋ฌผ๋ก develop ๋ธ๋์น๋ main ๋ธ๋์น ์์์ ์์ํ ๋ธ๋์น์ ๋๋ค.
develop ๋ธ๋์น์์๋ ์์๋ก ๋ฒ๊ทธ๋ฅผ ์์ ํ ์ปค๋ฐ๋ค์ด ์ถ๊ฐ๋ฉ๋๋ค. develop ๋ธ๋์น์์๋ ์์๋ก ์์ ํ ์ฝ๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. feature ๋ธ๋์น๋ ์ธ์ ๋ develop ๋ธ๋์น์์ ์์ํฉ๋๋ค. ๊ธฐ๋ฅ ์ถ๊ฐ ์์ ์ด ์๋ฃ๋์๋ค๋ฉด, feature ๋ธ๋์น๋ develop ๋ธ๋์น๋ก PR์ ํตํ ์ฝ๋๋ฆฌ๋ทฐ ์ดํ merge๋ฉ๋๋ค. develop๋ธ๋์น๋ ์ด๋ฒ ๋ฒ์ ์ ํฌํจ๋๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด merge ๋์๋ค๋ฉด QA๋ฅผ ํ๊ธฐ ์ํด์ develop ๋ธ๋์น์์ release ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค. QA๋ฅผ ์งํํ๋ฉด์ ๋ฐ์ํ ๋ฒ๊ทธ๋ค์ release ๋ธ๋์น์ ์์ ๋ฉ๋๋ค. QA๋ฅผ ๋ฌด์ฌํ ํต๊ณผํ์๋ค๋ฉด release ๋ธ๋์น๋ฅผ develop ๋ธ๋์น์ main ๋ธ๋์น๋ก mergeํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ถ์๋ main ๋ธ๋์น์์ ๋ฒ์ ํ๊ทธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๐ rebase์ squash์ ํ์์ฑ์ ๋ํ ๊ทธ๋ฆผ
rebase์ squash๋ฅผ ํ์ ๋ ์ผ๋ง๋ ๋จ์ํด ์ง๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๋ถํ์ํ ์ปค๋ฐ์ ๊ฒฝ์ฐ์๋ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ๋์์ฃผ์ง๋ ๋ชปํ ๋ฟ๋๋ผ, ๊ทธ๋ ๊ธฐ์ ํ๋๋ก ํฉ์น๋ ๊ฒ์ ์ข์ต๋๋ค. ๋ฌผ๋ก ํญ์ ํฉ์ณ์ผ ํ๋ ๊ฒ์ ์๋์ง๋ง, ๋ถ๋ฆฌ๋์ด ์๋๊ฒ ํ๋์ ์ปค๋ฐ์ ๋ซ๋ค๋ฉด ์คํ๋ ค ๋๋ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ ์ด๋ฌํ ๊ฒฝ์ฐ๋ ์์ ์ ์์ธํ๊ฒ ๋๋์ง ๋ชปํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
โ 2. Kuring์ Git-flow ์ ๋ต ๋ถ์ (์๊ท๋ชจ ํ์์์ Git-flow ์ ๋ต)
๐ ์ฌ๊ธฐ์์๋ ์ค์ ๋ก Kuring์์ ์ด๋ป๊ฒ ์์ ํ๋์ง ๋ถ์ํด ๋ณด๋๋ก ํฉ์๋ค.
Kuring์์๋ Git-flow ์ ๋ต์ ์ ์ฉํ์ฌ, develop, main ๋ธ๋์น๋ฅผ ๋๊ณ ์์ต๋๋ค.
Kuring-app-ios ๋ถ๋ถ์ ์๊ฒฉ ๋ ํฌ์งํ ๋ฆฌ ๋ถ๋ถ์ ๋๋ค.
develop branch๋ ํ๋์ Upstream Remote Repository์ ๋๋ค.
Origin Remote Repository๋ ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
feature ๋ถ๋ถ์ ๋๋ค.
ํ๋ก์ ํธ์์ feature ๊ฐ๋ฐ์ ์งํํ๋ค๋ฉด ํ๋ก์ ํธ ํ์์ ์ ํฌ๋
[feature/์ด๋ฆ/๋ด์ฉ] ์ด๋ฐ์์ผ๋ก ๋ธ๋์น๋ฅผ ๋ถ๊ธฐํ์ฌ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Origin Remote Repository์์ ์์ ์ ๋ง์น๋ฉด develop branch๋ก Pull Request๋ฅผ ์ด๊ณ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํฉ๋๋ค.
์ดํ ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ๋๋ฌ๋ค๋ฉด mergeํ๊ณ ํด๋น ๋ธ๋์น๋ฅผ ์๊ฒฉ์์ deleteํ๊ณ ์์ต๋๋ค.
๊ทธ๋ ์ง๋ง ์ ๋ ํ๋ก์ ํธ์์๋ ํ์ฌ ์์ ์งํ์ํฉ์ ๊ณต์ ํ๊ณ ์ PR์ openํ๊ณ work in progress ๋ ์ด๋ธ์ ์ค์ ํ์ฌ ๋ก๋๋ค.
PR์ ํตํด ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํ ๋๋ ์ผ์ ํ ๊ท์น์ด ์์ต๋๋ค.
์ ์ ๊ฒฝ์ฐ์๋ ์์ ์ค์ PR์ openํ๊ณ wip๋ฅผ Label์ ๋ฌ์๋์ด์, ์์ ์ฐฝ์ ์์ฃผ ํ์ฉํ๊ณ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ธ ํ์ ์งํค๊ณ ํ์์๋ ์ ๊ฐ ์์ ํ๋ ๋ด์ฉ์ ๋ํ ์ฌํญ์ ์ ์ด๋์ด์ ์ด ๋ถ๋ถ๋ง ํ์ธํ๊ณ ์์ ์ ์ด์ด๊ฐ๋๋ค.
์์ ์ฐฝ์ [DONE], [FIXME], [ISSUE], [ํ์ธํ ์ฌํญ], [๋ค์ ์์ ] ๋ฑ์ ๊ธ๋ก ๊ธฐ๋กํ๊ณ ์์ต๋๋ค.
์๋๋ PR ๋ด์ฉ ์ค ์ผ๋ถ๋ถ์ ๋๋ค.
๐ Kuring์ ํตํด์ ์ ๋ฆฝํ ๋์ commit ๊ท์น
๊ทธ๋์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์ด๋ป๊ฒ ํ ์ง ๊ณ ๋ฏผ์ด ๋ง์๋๋ฐ, ์ด์ ๋ ๋๋ฆ ํ์คํ ์ ๋ฆฝํ์ฌ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์๋์ ๊ทธ ์์๊ฐ ์์ต๋๋ค.
์ด์ ์๋ [์ญ์ ], [์ด์] ๋ฑ์ ๋ ๋ค์ํ๊ฒ ์ฌ์ฉํ๊ณ ์์๋๋ฐ, ์์ ์ ์งํํ๋ฉด์ ์ ๊ฒ ๊ฐ์ฅ ์ ๋ง๋ ๊ท์น์ ์ ๋ฆฝํ์ฌ ์ฌ์ฉํ๊ณ ์ ํฉ๋๋ค.
์ปค๋ฐ ์์ฑ ๋ด์ฉ์ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๋ณด์์ ๋๋ ํ์คํ๊ฒ ์ธ์งํ ์ ์์ด์ผ ํฉ๋๋ค.
๐ [์ถ๊ฐ] ๊ฐ๋ฐํ ์ฌํญ์ ๋ํด ์ปค๋ฐํฉ๋๋ค.
๐ [์์ ] ์ฃผ์ ์ ๋ฆฌ, ํ์ผ ์ญ์ , ๋ค์ด๋ฐ ๋ณ๊ฒฝ ๋ฑ์ ์ปค๋ฐํฉ๋๋ค.
๐ [๊ธฐ๋ก] ์ด์๋ฅผ ์ฃผ์์ ํตํด ๊ธฐ๋กํ๊ณ ์ปค๋ฐํฉ๋๋ค.
ํฌ๊ฒ 3๊ฐ์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฒฝํ์ ์์ง๊น์ง๋ ์ด ์ธ๊ฐ๊ฐ ๊ฐ์ฅ ํจ์จ์ ์ด๊ณ ์ง๊ด์ ์ผ๋ก ๋ค๊ฐ์ค๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ์ธ์ ๋ค๋ฅธ ๊ฐ๋ฐ์ ๋ถ๊ป์ ์์ ํ์ ๋ด์ฉ ์ค ์ฑํํ๊ณ ์ ํ๋ ๋ถ๋ถ
๐ [๋ฒ์ ] ๋ฒ์ ์ ์ปค๋ฐํฉ๋๋ค.
๊ทธ ์ธ์ ๊ณ ๋ฏผ์ค์ธ ์ปค๋ฐ ๊ท์น
๐ [๋ฆฌ๋ทฐ] ์ฝ๋ ๋ฆฌ๋ทฐ ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํฉ๋๋ค.
- ๊ณ ๋ฏผํ๋ ์ด์ ๋ [์์ ]์ผ๋ก๋ ์ถฉ๋ถํ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ ๊ฐ๊ณ , ๊ฐ๋ฐ์ ์ธ ์ถ๊ฐ์ฌํญ์ด ์์ผ๋ฉด [์ถ๊ฐ]์ [๋ฆฌ๋ทฐ] ์ฌ์ด์์ ์ถฉ๋ํ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ '[๋ฆฌ๋ทฐ] 1์ฐจ ๋ฆฌ๋ทฐ ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํฉ๋๋ค.' ๋ก ํ ์ค์ ๊ธฐ๋ก์ ๋จ๊ธธ๊น ํ๋๋ฐ, ์ด ๋ถ๋ถ๋ ๊ฒฐ๊ตญ์ [๊ธฐ๋ก]์์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ต๋๋ค. '[์์ ] PR๋ฆฌ๋ทฐ - {๋ด์ฉ}' ๋ ๊ณ ๋ คํด ๋ณด์์ผ๋, ์ด ๊ฒฝ์ฐ์๋ PR๋ฆฌ๋ทฐ ๋ถ๋ถ์ ์์ฑํ์ง ์๊ณ ์ปค๋ฐ์ ์ฌ๋ฆด ์ ์์ด์ ์ด ๊ฒฝ์ฐ์๋ ์ปค๋ฐ ๊ธฐ๋ก์ ์์ ํด์ผํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์ ์คํ๋ ค ์์ฐ์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
- ๊ฒฐ๋ก : [๋ฆฌ๋ทฐ] ํค์๋๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
(์ฌ์ฉ ์์)
- [์ถ๊ฐ] notifications์ ์ํ ํ ์คํธ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- [์ถ๊ฐ] bookmarkList์ UI๊ตฌ์ฑ์ ์๋ฃํ์์ต๋๋ค.
- [์ถ๊ฐ] bookmarkList์์ NoticeWebView ๋ก์ง์ ๊ตฌํํ์์ต๋๋ค.
- [์์ ] searchView์ engine์ access level์ ์์ ํฉ๋๋ค.
- [์์ ] ๋ถํ์ํ ์ฝ๋ ๋ฐ ํ์ผ์ ์ ๋ฆฌํฉ๋๋ค.
- [์์ ] ์ฌ์ฉํ์ง ์๋ ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ญ์ ํฉ๋๋ค.
- [์์ ] UserDefaultsManager๋ฅผ app์์ sdk๋ก ์ด์ ํ์ฌ ํตํฉํฉ๋๋ค.
- [๊ธฐ๋ก] ํ ๊ธ๋ง ์ด์์ ๋ํ FIXME๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
- [๊ธฐ๋ก] ๋์์ด๋์ ์์ฒญ์ ๋ฐ๋ฅธ UI๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋กํฉ๋๋ค.
- [๊ธฐ๋ก] 1์ฐจ ๋ฆฌ๋ทฐ ์๋ฃ
3. Git-flow ์ ๋ต์ ๊ฐ์ธ ๋ ํฌ์ ์ ์ฉํ๊ณ ์ฐ์ตํด๋ณด๊ธฐ
ํด๋น ์ฐ์ต์ ์๋์ ๋ ํฌ์์ ์งํํฉ๋๋ค. ์๋ํ๋ฉด ์์ผ๋ก SwiftUI๋ฅผ ์ง์์ ์ผ๋ก ๊ณต๋ถํ๊ณ ์ ๋ฐ์ดํธ ํ ์์ ์ด๊ธฐ ๋๋ฌธ์ ํ์ฌ๋ก์จ ๊ฐ์ฅ ์ ํฉํ ๋ ํฌ๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค..
https://github.com/lgvv/SwiftUI
๐ ์ธํ ๋ฐฉ๋ฒ - ํฐ๋ฏธ๋์ ์ฌ์ฉํ๊ธฐ ๋ณด๋จ ์์คํธ๋ฆฌ๋ฅผ ํ์ฉํฉ๋๋ค.
๐ 1. develop branch ๋ง๋ค๊ธฐ
- ์์คํธ๋ฆฌ์์ develop์ด๋ ์ด๋ฆ์ผ๋ก ์๋ก์ด ๋ธ๋์น๋ฅผ ๋ง๋ญ๋๋ค.
- ์๊ฒฉ์ pushํฉ๋๋ค.
- ํด๋น ๋ ํฌ์์ Settings - Code and automation - Branches์์ Default branch๋ฅผ develop ๋ธ๋์น๋ก ๋ณ๊ฒฝํฉ๋๋ค.
์๋์ ์ฌ์ง์ฒ๋ผ ๋ํ๋๋ค๋ฉด ์ ์์ ์ผ๋ก ์ํ์ด ๋ ๊ฒ์ ๋๋ค.
๐ 2. develop ๋ธ๋์น๋ฅผ ๋ง๋ค์๋ค๋ฉด ์์คํธ๋ฆฌ์์ ์ํํ ์์
์ ๋ํ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค.
- ์์คํธ๋ฆฌ์์ learning/git/flow ๋ธ๋์น๋ฅผ ๋ง๋ญ๋๋ค.
- ์ค์ ๊ฐ๋ฐ์์๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด๋ผ๋ฉด { feature/์ด๋ฆ/์์ }์ผ๋ก ํ๊ฒ ์ง๋ง ์ ๋ { ํ์ต/์ฃผ์ /๋ด์ฉ } ์ผ๋ก Git-flow๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ณ๊ฒฝ์ฌํญ์ ๋ง๋ ํ, ์ปค๋ฐ์ ์์ฑํฉ๋๋ค.
- ์ ๋ README.md ํ์ผ์ ์์ ํ์ฌ ์ปค๋ฐ 2๊ฐ๋ฅผ ์์ฑํ์์ต๋๋ค.
๐ 3. Origin Remote Repository์ pushํ๊ณ PR์ ์์ฑํฉ๋๋ค.
- ์๊ฒฉ์์ PR์ ์คํํ๊ณ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ ํ mergeํฉ๋๋ค. mergeํ ๋ธ๋์น๋ ์ญ์ ํฉ๋๋ค.
- merge์ดํ ์์คํธ๋ฆฌ๋ฅผ ์ด์ด์ ํ์น ํ ํ์คํ ๋ฆฌ๋ฅผ ํ์ธํฉ๋๋ค.
- ์์ ๊ฐ์ ๋ชจ์ต์ผ๋ก ๋ฐ๋ ๊ฑธ ํ์ธํ ์ ์์ต๋๋ค.
- learning/combine/encoding-decoding์ 8๋ฒ stash ์์ ๋ฅผ ์ํด ์ฌ๊ธฐ์ ์์นํฉ๋๋ค. ๋์ค์ ๋ค์ ๋ณด์์ฃผ์ธ์.
๐ 4. rebase์ ๋ํด์ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค.
์์ ์์ ์ดํ์ ์์ ๊ฐ์ flow๋ฅผ ๋ง๋ค์์ต๋๋ค.
์์ ์ ์๊ฐ ์์๋ rebaseA -> rebaseB -> develop ์์์ ๋๋ค.
์ฌ๊ธฐ์ ์ด์ ์ฐ๋ฆฌ๋ ๋ฆฌ๋ฒ ์ด์ค๋ฅผ ํ์ฉํด์ ๋ธ๋์น๋ฅผ ์์๊ฒ ๋ฐ๊ฟ๋ด ์๋ค.
- ์ฐ์ ๋ฆฌ๋ฒ ์ด์ค๋ฅผ ํ ์์ ํ ๋ธ๋์น๋ก ์ฒดํฌ์์ํฉ๋๋ค.
- ์ฐ๋ฆฌ๋ rebaseA ๋ธ๋์น๋ฅผ ๋ฆฌ๋ฒ ์ด์คํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ rebaseA๋ก ์ฒดํฌ์์ํฉ๋๋ค.
- ์ดํ์ rebaseA๋ฅผ ๋ถ์ด๊ณ ์ถ์ ์ฅ์(develop)๋ฅผ ์ฐํด๋ฆญํ์ฌ ์ฌ๋ฐฐ์น๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์๋ง ์ถฉ๋์ด ์๋ค๋ฉด ์ฌ๋ฐฐ์น๊ฐ ์ ์์ ์ผ๋ฌ ์ํ๋์ด์ ๊น๋ํ๊ฒ ๋ธ๋์น๊ฐ ํฉ์ณ์ง ๊ฒ์ด๋ค.
ํ์ง๋ง ์ถฉ๋์ด ์๋ค๋ฉด ์๋์ ๊ทธ๋ฆผ์ฒ๋ผ ๋๋๋ฐ, ์ถฉ๋ ์ฌํญ์ ํด๊ฒฐํด๋ณด์!
- ์ถฉ๋์ ํด๊ฒฐํ๋ ค๊ณ ํ๋๋ฐ, ๊ฒฐ๊ตญ์ develop ๋ธ๋์น์ rebaseA๊ฐ ๊ฐ์ ํ์ผ์์ ์์ ์ ๊ฐํด์ ๋ฐ์ํ ๋ฌธ์ ์๋ค. ๋ฐ๋ผ์ develop ๋ธ๋์น์์ ์์ ํ rebaseA์ ๊ฒน์น๋ ๋ถ๋ถ์ ์ญ์ ํ๋ค.
- rebase๋ฅผ ์ ์์ ์ผ๋ก ๋๋๋๋ฐ, develop๋ณด๋ค rebaseA๊ฐ ๋ ์์ ์์ต๋๋ค. develop ๋ธ๋์น๋ฅผ rebaseA์ ๋์ผํ ์์น๋ก ์ฎ๊ฒจ ์ฃผ์ด์ผ ํฉ๋๋ค.
- ๋ฐฉ๋ฒ์ develop(๋ถ๋ชจ) ๋ธ๋์น๋ก ์ฒดํฌ์์ ํ ๋ค์์ rebaseA ๋ธ๋์น๋ฅผ metge rebaseA into develop์ ์ํํ๋ฉด ๋ฉ๋๋ค.
๐ 5. ๋ฆฌ๋ฒ ์ด์ค์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ด ์๋ค. ์ปค๋ฐ์ด ํจ์ฌ ๊น๋ํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค!
๐ 5. ์๊ฒฉ develop์ด local develop ๋ณด๋ค ์์ ์๋ ๊ฒฝ์ฐ ํด๊ฒฐํ๊ธฐ
์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์๋ค. ํ์ฌ Uncommitted changes๊ฐ ๋์ด ์๋ ์ด์ ๋ rebase(์ฌ๋ฐฐ์น)๋ฅผ ํ๋ ค๊ณ ํ์ผ๋ ์ถฉ๋์ด ๋ฌ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ฐ์ rebase๋ฅผ ํตํด rebaseB์ ๋ก์ปฌ develop์ ํฉ์น๋ค.
- ์ถฉ๋์ ํด๊ฒฐํ๊ณ ๋ณํฉํ์๋๋ ์์ฒ๋ผ ์์ ๋ฉ๋๋ค. rebase๋ฅผ ํ๊ธฐ์ ๋ธ๋์น๊ฐ ๋ค์์ฌ๋ ๊น๋ํ๊ฒ ๊น์ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
๐ 6. Git-flow ์ ๋ต์์ release ๋ธ๋์น๋ฅผ ๋ง๋ค์ด์ ํ์ธํด ๋ด ๋๋ค.
- develop ๋ธ๋์น๋ฅผ ๋ค ๋ง๋ค๊ณ release ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉํ๋๋ฐ, ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
- ๊ทธ๋ฐ๋ฐ, QA๋์ค ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. ์๊ฒฉ์ ํธ์ํ๋๋ฐ, ์ปค๋ฐ์ ์คํ๊ฐ ์์ด์ revertํ ๋ค์ pushํ์ต๋๋ค.
๐ 7. ํ๊ทธ๋ฅผ ์ค์ ํ๊ณ develop๊ณผ release๋ฅผ ์ธํ ํฉ๋๋ค.
๐ 8. hotfix๋ฅผ ์์๋ด ์๋ค.
- ์์ ์ฌ์ง์ฒ๋ฌ develop์ด๋ main์ ์ฌ๋ฆฌ๊ณ devleop์ ์ ๋ถ ๋ง์น ์ํฉ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ, ๊ฐ์๊ธฐ hotfix๋ฅผ ํด์ผํ ์ผ์ด ์๊ฒผ์ต๋๋ค.
- hotfix๋ฅผ ํด๋ด ์๋ค.
hotfix๋ ์ฑ๊ณตํ์ต๋๋ค!
๐ 8. stash๋ฅผ ์์๋ด ์๋ค.
- develop ์์ ์ ๋ฐ๊พธ๋ฉด, develop์ด uncommitted ์ํ๋ผ์ stash๋ฅผ ์งํํด์ผ ํฉ๋๋ค.
- ์์คํธ๋ฆฌ ์ฐ์ธก ์๋จ์ ์๋ ์คํ์๋ฅผ ํด๋ฆญํด์ ์คํ์ ํด ๋ก๋๋ค. (์น์๋๋ค.)
- ๊ทธ ๋ค์์ ์ฌ๋ฐฐ์นํ๋ฉด ๋!
- ๊ทธ๋ฆฌ๊ณ ์คํ์ ํ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ ์ค๋๋ค.
์คํ์ ์ ์ฉ ์๋ฃ!
์ฌ์ค ๋ด๊ฐ ์กฐ๊ธ ์ค์ํด์, stash๋ง ํ์ด์ผ ํ๋๋ฐ develop์ผ๋ก ๊ทธ๋ฅ mergeํ๋ค,,
ํฌ๊ฒ ๋ฌธ์ ๊ฐ ๋์ง ์์์ ์ ์งํ๋๋ฐ ๋ค์๋ถํฐ๋ ์กฐ์ฌํ์.
4. git ์ถฉ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ
(2022.06.13) [1.2.2] ๋ฒ์ ์์ SwiftUI๋ก ์ฝ๋๋ฅผ ์ ํํ๋ฉด์ ๋ฐ์ํ ๋ฌธ์ .
์์ฃผ ํ๋ ๋ฌธ์ ๋ฅผ ๋ง๋ฌ๋ค. ์ฐ์ ์ ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ฌ์ฉํ์ง ์๋์ง ์ ์คํ ๋๋ ์๊ฐ์ด์๋ค. ์คํ ๋ฆฌ๋ณด๋๋ ์กฐ๊ธ๋ง ์์ง์ฌ๋ ๋ณํ๊ฐ ์๊ธฐ๋๋ฐ ๋ณํ๋ ๋ถ๋ถ์ด ๊น์ ๋ฐ์๋๊ณ , ์ด๋ก ์ธํด์ ์ถฉ๋์ ์ก์์ผํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฒ์ ๊ฐ์ด ์์ ํ์๋ ๋ถ๊ป์ ๋ง์ ๋์์ ์ฃผ์ จ๋๋ฐ, ๋๋ถ๋ถ์ ๋ฌธ์ ๋ git์์ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค.
PR์ ํตํด ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ๋ง์น ํ Approved๋์๋ค๋ฉด merge๊ฐ ๊ฐ๋ฅํ๊ฒ ์ด๋ก์ ๋ฒํผ์ด ํ์ฑํ ๋๋๋ฐ, ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ๋ conflict๋ ๋ถ๋ถ์ ๋ณด์ฌ์ฃผ๊ณ ์ด๋ฅผ ํด๊ฒฐํ๋ผ๊ณ ํ๋ค.
์ผ๋จ ๊ธฐ๋ณธ์ ์ผ๋ก๋ git์์ ํด๊ฒฐ ๊ฐ๋ฅํ๊ณ , git์์ ์ถฉ๋๋๋ ํ์ผ์ ์ฐพ์์ ์ด๋ค ๋ธ๋์น์ ํ์ผ์ ์ ํํ ๊ฑด์ง ๊ณ ๋ฅธ ํ ๋ค๋ฅธ ๋ธ๋์น์ ์์ ๋ฌผ์ ์ง์ฐ๋ฉด ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ฝ, ์คํ ๋ฆฌ๋ณด๋์ฒ๋ผ ๋๋ฌด ๋ณต์กํ๊ฒ ๊ผฌ์ฌ์ ๋์ ํ ์ฐพ๊ธฐ๊ฐ ์ด๋ ค์ธ ๋๋ ์ด๋ป๊ฒ ํด์ผํ ๊น??
์ด ์ํฉ์์๋ ๋ด๊ฐ ์์ ํ ์คํ ๋ฆฌ๋ณด๋ ํ์ผ์ ๋ ๋ฆฌ๊ณ develop ๋ธ๋์น์ ์คํ ๋ฆฌ๋ณด๋ ํ์ผ์ ์ ํํด์ mergeํ๋ค.
๊ทธ ์ดํ ํจ๊ป ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์งํํ๋ฉด์ develop ๋ธ๋์น๋ฅผ ํจ๊ป ๋ณด๋ฉด์ ์์ ์ฌํญ์ ๋ค์ ์์ฑํด pushํด ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์กฐ์ ํ๋ค!!
๊ฐ์ด ์์ ํ์๋ ๋ถ ๋๋ถ์ ์์ฒญ๋๊ฒ ์๋๊ฐ ๋ถ๊ณ ๊ฐ๋ฐ์ ์ฌ๋ฏธ๋ฅผ ๋ ์ฌ๋ฏธ๋ฅผ ๋ถ์ด๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌด์๋ณด๋ค๋ ์ด์ ๋ UIKit + RxSwift๋ณด๋ค๋ SwiftUI + Combine์ 1์์๋ก ์ฌ์ฉํ๋๋ฐ, ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๊ณ ๋๋ฌด๋๋ ์ข๋ค!
์ฌ๊ธฐ๊น์ง Kuring์์ ์ ์ฉ๋๋ Git-flow๋ฅผ ์ ๋ถ ์์๋ณด์์ต๋๋ค. ์์ผ๋ก Git์๋ ์ค๋์ญ์ ๊ฐ์ ธ๊ฐ ๋ด ์๋ค.
๋ถ์กฑํ ๋ถ๋ถ์ด๋ ์๋ชป๋ ์ ์ ์ธ์ ๋ ์ง ๋๊ธ์ ๋จ๊ฒจ์ฃผ์ธ์!
(์ฐธ๊ณ )
https://techblog.woowahan.com/2553/
'iOSํ๋ก์ ํธ > โ๏ธ Kuring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] ๋ด๊ฐ ๋ง๋ SPM์์ No Such Module.. (0) | 2022.08.24 |
---|---|
[iOS] SPM ํ๋ก์ ํธ ์ด๋ฆ ๋ณ๊ฒฝ์ ์ค๋ฅ (0) | 2022.08.24 |
[SwiftUI] UIActivityViewController๋ฅผ SwiftUI๋ก (0) | 2022.05.31 |
[SwiftUI] List accessory (feat. disclosure indicator) (0) | 2022.05.31 |
[SwiftUI] List Row ์ ํํ๊ธฐ(TableView didSelectRow) (0) | 2022.05.30 |