1. Git & GitHub ์ฐจ์ด์
โ Git
: ์ปดํจํฐ์ ์ค์น๋๋ SW๋ก ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ (VCS)
Git์ ๋ก์ปฌ์ ์ฅ์(๋ด ์ปดํจํฐ)์ ์๊ฒฉ ์ ์ฅ์(์๋ฒ ์ปดํจํฐ)๋ก ๋๋๋ค.
Git์์ ์๊ฒฉ ์ ์ฅ์๋ ์ฝ๋์ ์๋ณธ์ด๋ ๋ณ๊ฒฝ ๋ด์ญ์ ์ ์ฅํ๋ ์ญํ ์ ํ๋ค.
์์ค ์ฝ๋์ ๋ณ๊ฒฝ ์ด๋ ฅ์ ๊ด๋ฆฌํ๊ณ ์ฌ๋ฌ ์ฌ๋์ด ๋์ ์์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
์ด๋ฐ ๊ธฐ๋ฅ์ ํ๋ ํด์ ํ์ ๊ด๋ฆฌ ํด์ด๋ผ๊ณ ํ๊ณ , ๋ํ์ ์ผ๋ก Git, SVN, CVS ๋ฑ์ด ์๋ค.
* repository(repo) : Git์ผ๋ก ๊ด๋ฆฌ๋๋ ํ๋ก์ ํธ
๋ด ์ปดํจํฐ์ ์ ์ฅ๋์ด ์๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ก์ปฌ repo,
Github ๊ฐ์ ์น ์๋น์ค์ ์ ์ฅ๋์ด ์๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์๊ฒฉ repo๋ผ๊ณ ํ๋ค.
โ GitHub
: ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ํด์ธ Git์ผ๋ก ๊ด๋ฆฌํ๋ ํ๋ก์ ํธ๋ฅผ ์ ๋ก๋ ํ ์ ์๋ ์น ์๋น์ค
(GitLab, Bitbucket ๋ฑ ๋ค์ํ ์๋น์ค๊ฐ ์์)
2. Git ๊ธฐ๋ณธ ๋ช ๋ น์ด(CLI)
๐ฝ $ git init
: git๋ฅผ ์์ํ๋ ๋ช ๋ น์ด. ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํฌ๋งํ๋ ๋๋ ํ ๋ฆฌ์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ
์ฒ์์ ํ ๋ฒ๋ง ํด์ฃผ๋ฉด ๋๋ค.
๐ฝ $ git clone
: ์๊ฒฉ repo์ ์กด์ฌํ๋ ํ๋ก์ ํธ๋ฅผ ๋ด ์ปดํจํฐ์ ๋ณต์ ํด ์ด๊ธฐ repo ์ธํ
git clone์ ๋ชจ๋ ํ๋ก์ ํธ์ ํ์ผ, ์ปค๋ฐ ๋ฐ ๋ธ๋์น๋ฅผ ํฌํจ
๐ฝ $ git add ViewController.swift(ํ์ผ๋ช )
: staging ์ํ.
๋ก์ปฌ, ์๊ฒฉ์ ์ฅ์์ ์ ๋ก๋ํ ํ์ผ์ ์ถ๊ฐ.
์ปค๋ฐ์ ๋ฐ์ํ ํ์ผ์ ์ ํํ ์ ์์
๐ฝ $ git commit -m "UITableView๋ฅผ ํตํ ๋ ์ด์์ ์์ "
: git add๋ก ์ถ๊ฐํ ํ์ผ๋ค์ ๋ก์ปฌ์ ์ฅ์(๋ด ๋งฅ๋ถ)์ ์ ์ฅ(๊ธฐ๋ก)
- ๋๊ฐ/ ์ธ์ / ์ปค๋ฐ ์์ ์ ํ์ผ ์ํ / ์ปค๋ฐ ๋ฉ์์ง ์ ๋ณด๋ฅผ ํฌํจ
$ git commit -m "์ปค๋ฐ ๋ฉ์์ง - close #[์ด์ ๋ฒํธ]"
$ git commit -m "์ปค๋ฐ ๋ฉ์์ง - fix #[์ด์ ๋ฒํธ]"
$ git commit -m "์ปค๋ฐ ๋ฉ์์ง - resolve #[์ด์ ๋ฒํธ]"
๐ฝ $ git push origin main(๋ธ๋์น๋ช )
: ์์ ํ ๋ก์ปฌ repo์ commit๋ค -> ์๊ฒฉ repo๋ก ์ ๋ฐ์ดํธ(push)
๐ฝ $ git pull
: ์๊ฒฉ repo์ ์ ๋๋ ์๋ก์ด commit๋ค -> ๋ก์ปฌ repo๋ก ์ ๋ฐ์ดํธ(pull)
๐ฝ $ git status
: ์ถ์ ๋์ง ์๊ฑฐ๋, ์์ ๋๊ฑฐ๋, ์คํ ์ด์ง ๋ ๋ณ๊ฒฝ ์ํ๋ฅผ ๋ณด์ฌ์ค
๐ฝ $ git branch
: ๋ก์ปฌ์์ ์์ ์ค์ธ ๋ธ๋์น๋ฅผ ๋ณด์ฌ์ค.
$ git branch JH // JH ๋ธ๋์น ์์ฑ
$ git branch JH main // main์์ ํ์๋๋ ๋ธ๋์น๋ฅผ ๋ง๋ ๋ค.
$ git bracnch -D JH // JH ๋ธ๋์น ์ญ์
๐ฝ $ git merge
: ๋ ๊ฐ์ ๋ณ๊ฐ์ ๋ถ๊ธฐ์์ ์ด๋ฃจ์ด์ง ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒฐํฉ
3. Xcode ๋ด์์ ์ฌ์ฉ๋ฒ
4. Git ํ์ ์๋๋ฆฌ์ค_์ถฉ๋(Conflict) ๋ฐฉ์ง
1. ๋๊ฐ ํด๋น ์์ ์ ํ ๊ฒ์ธ์ง ์ ํ๊ธฐ_ Issue ํ ๋น
* ํ๋ก์ ํธ์์์ issue๋?
- ํ๋ก์ ํธ์์ ํด๊ฒฐํด์ผํ๋ ๋ฌธ์ ๋ก ํ๋ก๊ทธ๋จ์ด ์ํ๋๋๋ก ๋์ํ์ง ์๋ ๋ฒ๊ทธ ๋ฐ๊ฒฌ,
ํ๋ก์ ํธ ๊ฐ์ ์ ์ํด ์๋ก ์ถ๊ฐ๋ ๊ธฐ๋ฅ, ๋ด๊ฐ ํ ์์ ๋ฑ์ ํด๊ฒฐํ๊ธฐ ์ํ ์์
* Github์์ ์ด์ ์์ฑ ์ labels(ํด๋น ์์ ๋ถ๋ฅ)
Github๊ณผ ํจ๊ป ์ด์๋ฅผ ์ถ์ (tracking)ํ ์ ์๋ ๋๊ตฌ๋ก Jira, Trelloe ๋ฑ์ด ์๋ค.
ํ๋ก์ ํธ์ ๋ํ ์ค๊ณ๋ถํฐ ์์ ์งํ ์ํฉ์ ๋ํ ์ถ์ ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์
ํ์ฌ ํ๋ก์ ํธ๊ฐ ์ด๋๊น์ง ์งํ์ด ๋๋์ง ํ์ ์ด ๊ฐ๋ฅํ๋ค.
Github์ Jira๋ฅผ ์ฐ๋ํด์ ์ฌ์ฉํ ๋ ์๋ก ์ํฅ์ ์ค ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ์ผ๋ก ๊ฐ์ ธ๊ฐ ๋๊ตฌ๋ฅผ ์ ํํด์ผ ํ๋ค.
๐ฝ ์ฐ๋๋ฐฉ๋ฒ ๋ธ๋ก๊ทธ ๋งํฌ
๐ฝ Github๋ฅผ ์ฌ์ฉํ ์ด์๊ด๋ฆฌ
2. ๊ฐ์ ๋งก์ ์์ ํ๊ธฐ_Branch
๋ธ๋์น๋ ํน์ commit์์ ๊ฐ๋ผ์ ธ ๋์ ์์ ํ ์ ์๋ค.
๊ธฐ๋ฅ๋ณ๋ก ์ด๋ฆ์ ๋ง๋ค์ด์ฃผ๊ณ ๋ธ๋์น์์ ์์ ํ๋ค.
ํ๋ก์ ํธ๋ง๋ค branch๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์กฐ๊ธ์ฉ ๋ค๋ฅด๋
commit ํ๊ณ ์์ ํ๋ ๋ฐฉ๋ฒ์ ํตํ์ด flow๋ผ๊ณ ํ๋ค.
๊ท์น์ ์ ์งํจ ๋ธ๋์น๋ช ์ ํ๋ก์ ํธ ๊ด๋ฆฌ๊ฐ ์ฝ๋ค.
๐ Git-flow : ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์ฌ์ฉ
Branch | ๊ธฐ๋ฅ |
feature/๊ธฐ๋ฅ | ๊ธฐ๋ฅ ๊ตฌํ์ ์๋ฃ ํ์ ๊ฒฝ์ฐ develop ๋ธ๋์น๋ก ๊ธฐ๋ฅ์ ๋ํด ๊ฐ๋ค. |
develop | feature ๋ธ๋์น์์ ๊ตฌํ๋ ๊ธฐ๋ฅ์ด ๋ชจ์ธ ๋ธ๋์น |
release | develop ๋ธ๋์น์์ ์์ฑ๋๋ฉฐ, ์ค์ ๋ฐฐํฌ ์ ํ ์คํธ, ๋ฒ๊ทธ ํ์ธ ํ๊ธฐ ์ํ ๋ธ๋์น |
main(master) | release ๋ธ๋์น์์ ์์ฑ๋๋ฉฐ ์ค์ ๋ฐฐํฌ๋๋ ๋ธ๋์น |
hotfix | main ๋ธ๋์น๋ฅผ ํตํด ๋ฐฐํฌ๊ฐ ์งํ๋์๋๋ฐ ๋ฌธ์ ๋ฐ์ํ ๊ฒฝ์ฐ ์์ฑํ๋ ๋ธ๋์น ๋ฌธ์ ํด๊ฒฐ ์ดํ main ๋ธ๋์น์ develop๋ธ๋์น๋ก merge |
๐ Github-flow
Branch | ๊ธฐ๋ฅ |
main(master) | ๋ฐฐํฌ๋ฅผ ์ํ ๋ธ๋์น๋ก ์ค์ฌ์ด ๋๋ ๋ธ๋์น |
(branch) | main ๋ธ๋์น๋ฅผ ํตํด ์์ฑ๋ ๋ธ๋์น๋ก ๊ธฐ๋ฅ๊ตฌํ(freature)์ด๋ ๋ฒ๊ทธ ํด๊ฒฐ(hotfix) ๋ฑ์ ๋ธ๋์น ๋ชฉ์ ์ ๋ช ์ |
๐ฝ Github flow ๋ธ๋ก๊ทธ ์ฐธ๊ณ ๋งํฌ1
๐ฝ Github flow ๋ธ๋ก๊ทธ ์ฐธ๊ณ ๋งํฌ2
3. ๋ณธ์ธ์ด ํ๋ ์์ ์ ํ๋ก์ ํธ์ ํฉ์น๊ธฐ ์ ์ฝ๋๋ฆฌ๋ทฐ
4. ์ต์ข ํ๋ก์ ํธ์ ์์ ๋ด์ฉ ํฉ์น๊ธฐ_merge
merge๋ ๋ธ๋์น๋ฅผ ๋ค๋ฅธ ๋ธ๋์น์ ํฉ์น๋ ๊ธฐ๋ฅ์ด๋ค.
์์ ์๋ฃ๋ ๋ธ๋์น๋ ์ญ์ ํด ๋์ค์ ๋ธ๋์น๊ฐ ๊ผฌ์ด๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ค.
๐จ ๋ค๋ฅธ ๋ธ๋์น์์ ๊ฐ์ ํ์ผ์ ์์ ํ๋ฉด merge conflict๊ฐ ๋ฐ์ํ๋ฏ๋ก
๊ฐ ๋ธ๋์น๋ง๋ค ๋ค๋ฅธ ํ์ผ์ ์์ ํด์ผํ ํ๋ค!!!!
5. ๋ณํฉ ์ถฉ๋(merge conflict) ํด๊ฒฐ
์๋ก ๋ค๋ฅธ ๋ธ๋์น์์ ๊ฐ์ ํ์ผ์ ์์ ํ๋ฉด ์ ์ชฝ์์
๋ด์ฉ์ด ์์ ๋์๋๋ฐ ์ด๋ค ๊ฒ์ ๋ฐ์ํด์ผํ ์ง ๋ชจํธํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ์ถฉ๋์ด ๋ฐ์ํ ๋ถ๋ถ์ <<<<<<< >>>>>>>๋ฅผ ํตํด
์ถฉ๋ ๋๋ ๋ถ๋ถ์ ์๋ ค์ค๋ค.
์ด๋ค ๋ด์ฉ์ ๋ฐ์ํ ์ง ๊ฒฐ์ ํ๋ค๋ฉด ์ถฉ๋ ํ์ ์ฃผ์์ ์ง์์ฃผ๊ณ
์ฝ๋๋ฅผ ์์ ํ commitํ๋ฉด ๋๋ค.
โ ๋ฌด์ํ ํ์ผ(gitignore) ์ฌ์ฉํ๊ธฐ
์๋ฅผ๋ค๋ฉด ๋น๋ฐ๋ฒํธ๋ ๊ณต๊ฐ๋์ง ๋ง์์ผํ ์ ๋ณด ๋ฑ์
์๊ฒฉ ๋ ํฌ์งํ ๋ฆฌ์ ์ฌ๋ผ๊ฐ์ง ์๋๋ก ํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋จ.
.gitignore์ ๋ฃ์ด์ผํ ํ์ผ์ ์๋ ์์ฑ ํด์ฃผ๋ ํด