• ์๋ ํ์ธ์~ ์ด์ ์ ์ด์ํ๋ ๋ธ๋ก๊ทธ ๋ฐ GitHub, ๊ณต๋ถ ๋ด์ฉ์ ์ ๋ฆฌํ๋ Study-GitHub ๊ฐ ์์ต๋๋ค!
• ๐
โ CLASS101 ๋ฐฑ์๋ ์์คํ ์ค๋ฌด - Chapter4 ๋ฐฐํฌ ์๋ํ์ ํ์ ์ ์ํ Git ์ฌ์ฉ
์๋ ํ์ธ์, ํด๋์ค101 ๋ฐฑ์๋ ์์คํ ์ค๋ฌด ๊ฐ์๋ฅผ ๋ฃ๊ณ , ๋ณต์ต ์ฐจ์์ผ๋ก ์ ๋ฆฌํ์ฌ ๋จ๊ธฐ๋ ค๊ณ ํฉ๋๋ค! ํน์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๊ธ์ ์ญ์ ํ๊ฒ ์ต๋๋ค !! |
class101.net/products/5fc4a3b4fc231b000d85661b
โ ๋จธ์งํ ๋ ๋ฐ์ํ๋ ์ถฉ๋(Conflict) ํด๊ฒฐํ๊ธฐ
• ์ถฉ๋์ ์ธ์ , ์ ๋ฐ์ํ๋์?
• ์๋ก ๋ค๋ฅธ branch๋ฅผ mergeํ๋ ค๊ณ ํ ๋
• ๊ฐ์ ํ์ผ์ ๊ฐ๊ฐ ๋ค๋ฅด๊ฒ ์์ ํ์ ๋
• ์ถฉ๋ ํด๊ฒฐํ๊ธฐ
• ์ถฉ๋์ ํผํ๊ธฐ ์ํด ์ด๋ป๊ฒ ํด์ผํ๋์?
• ์๋ก ๊ฐ์ ํ์ผ์ ์์ ํ์ง ์์ต๋๋ค.
• ๊ฐ๊ธ์ ์งง์ ๋จ์๋ก ์์ /๋จธ์ง๊ฐ ์ด๋ฃจ์ด์ ธ์ผ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ง๋๋ค.
• ์ถฉ๋์ Git๋ง์ ๋ฌธ์ ์ผ๊น์?
• ์ถฉ๋์ด ์์ฃผ ๋ฐ์ํ๋ฉด ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ค์ ์๊ฐํด๋ด ์๋ค.
โ ์ค๋ฌด์์ ์ ์ฉํ Git ๊ฟํ
• Git-flow
• Pull Request๋ก mergeํ๊ธฐ
• ๋ง์ง๋ง commit ์์ ํ๊ธฐ
• ์ํ๋ commit๋ง ๊ฐ์ ธ์ ํ์ฌ branch์ ๋ถ์ด๊ธฐ
๐ GitHub์ Repository๋ฅผ ์์ฑํ๊ณ , SourceTree๋ฅผ ํตํด Clone์ ๋ฐ์ต๋๋ค.
๊ทธ๋ผ ์์ ๊ฐ์ด README.md ํ์ผ ํ๋๊ฐ ์์ฑ๋์๊ณ , Initial commit ๋ผ๋ ์ค๋ช ์ผ๋ก ํ๋ ์์ฑ๋์์ต๋๋ค.
์ฐ์ธก ์๋จ์ ๊น ํ๋ก์ฐ๋ฅผ ํด๋ฆญ ํ ํ ์์ ๊ฐ์ด ์ค์ ํ ํ ํ์ธ์ ๋๋ฆ ๋๋ค.
(์ ํ ๋ธ๋์น๋ง main์ผ๋ก ๋ณ๊ฒฝ)
๊ทธ๋ผ ์ข์ธก์ develop ๋ผ๋ ๋ธ๋์น๋ง ์์ฑ๋ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
(๋ชจ๋ ๊ฐ๋ฐ์ develop ๋ธ๋์น์์ ์งํ์ ํฉ๋๋ค.)
Visual Studio Code๋ก ์์์ Cloneํ git-flow-practice ํด๋๋ฅผ ์คํํฉ๋๋ค.
์์คํธ๋ฆฌ์์ ๊น ํ๋ก์ฐ ํด๋ฆญ > ์ ๊ธฐ๋ฅ ์์ ํด๋ฆญ
๊ธฐ๋ฅ๋ช ์ add-file1 ๋ก ์ค์ ํ๊ณ ํ์ธ์ ๋๋ฆ ๋๋ค.
๊ทธ๋ฌ๋ฉด feature์ add-file1 ์ด๋ผ๋ ๋ธ๋์น๊ฐ ์์ฑ๋ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
์ด์ ๋น์ฅฌ์ผ ์คํ๋์ค ์ฝ๋์์ ํ์ผ์ ์ถ๊ฐํด์ค๋๋ค.
์์ ๊ฐ์ด ์๋ฌด๋ฐ ํ์ผ์ ์์ฑํ๊ณ ์์คํธ๋ฆฌ๋ก ๊ฐ์๋ค.
์์คํธ๋ฆฌ์์ ๋ณด๋ฉด ์ปค๋ฐํ์ง ์์ ๋ณ๊ฒฝ์ฌํญ์ด๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ๋์ค๊ฒ ๋๋๋ฐ์, ์ด ํ์ผ์ ์ปค๋ฐํด์ค์๋ค.
(์ข์ธก ์๋จ์ ์ปค๋ฐ ๋ฒํผ ํด๋ฆญ)
ํ์ผ์ ์คํ ์ด์ง์ ์ฌ๋ฆฌ๊ณ , ์ปค๋ฐ ๋ด์ญ์ ์์ฑํ ๋ค ์ปค๋ฐ์ ๋๋ฆ ๋๋ค.
์์ ๊ฐ์ด add-file1 ์ด ์ปค๋ฐ์ด ๋ ๊ฑธ ํ์ธํ ์ ์์ต๋๋ค.
์์ ๊ฐ์ ์ํ์์ ๋ค์ develop ๋ธ๋์น๋ก ๋์ด๊ฐ๋๋ค.
develop ๋ธ๋์น์์ ๊น ํ๋ก์ฐ > ์ ๊ธฐ๋ฅ ์์ > add-file2 ๋ฅผ ์ ๋ ฅํ๊ณ ํ์ธ์ ๋๋ฆ ๋๋ค.
๋น์ฅฌ์ผ ์คํ๋์ค ์ฝ๋์์ add-file2 ๋ธ๋์น์์ file2 ๋ผ๋ ํ์ผ์ ์์ฑํฉ๋๋ค.
๋ค์ ์์คํธ๋ฆฌ์์ ์ปค๋ฐ์ ์งํํฉ๋๋ค.
๐ ํ์ฌ ์ํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
• git-flow ์ ๋ต์ ์ฌ์ฉํด branch์ ๊ด๋ฆฌํฉ๋๋ค.
• develop ๋ธ๋์น์์ ๋ชจ๋ ๊ฐ๋ฐ์ด ์์๋ฉ๋๋ค.
• feature ๋ธ๋์น์์ ๊ฐ๊ฐ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์งํํฉ๋๋ค.
• ํ์ฌ add-file1 ๋ธ๋์น์ add-file2 ๋ธ๋์น๊ฐ ์กด์ฌํฉ๋๋ค.
• add-file2 ๋ธ๋์น์ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ๋๋ ์ํ์ด๊ณ , ์ด๋ฅผ develop ๋ธ๋์น์ merge๋ฅผ ์งํํ๊ณ ์ ํฉ๋๋ค.
ํ์ฌ add-file2 ๋ธ๋์น์์ develop ๋ธ๋์น๋ก merge๋ฅผ ์ํด ๊น ํ๋ก์ฐ > ๊ธฐ๋ฅ ๋ง๋ฌด๋ฆฌ ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ ๊ฐ์ด ๊ธฐ๋ณธ ์ค์ (rebase ์ํจ, ๋ธ๋์น ์ญ์ ํจ) ์ผ๋ก ์ค์ ํ ๋ค ํ์ธ์ ๋๋ฆ ๋๋ค.
add-file2 ๋ธ๋์น๊ฐ ์ญ์ ๊ฐ ๋์๊ณ , develop ๋ธ๋์น์ ์ ์์ ์ผ๋ก merge๊ฐ ๋์์ต๋๋ค.
add-file1 ๋ธ๋์น๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๋ฅ ๋ง๋ฌด๋ฆฌ๋ฅผ ์งํํฉ๋๋ค.
๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ๋๋๊ณ , develop ๋ธ๋์น๋ก merge๊ฐ ๋๋๋ฉด ๋ฆด๋ฆฌ์ฆ๋ฅผ ์งํํฉ๋๋ค.
๊น ํ๋ก์ฐ > ์ ๋ฆด๋ฆฌ์ฆ ์์ > ๋ฆด๋ฆฌ์ฆ ๋ช ์ค์ ํ ํ์ธ์ ๋๋ฆ ๋๋ค.
๋ฆด๋ฆฌ์ฆ ๋ธ๋์น(v1.0.0) ์์ ๊น ํ๋ก์ฐ > ๋ฆด๋ฆฌ์ฆ ๋ง๋ฌด๋ฆฌ ๋ฅผ ํด๋ฆญํฉ๋๋ค.
(๋ฆด๋ฆฌ์ฆ ๋ธ๋์น๋ฅผ main ๋ธ๋์น์๋ merge๋ฅผ ํด์ค๋๋ค.)
์ ํ๋ฉด์์ ํ์ธ์ ํด๋ฆญํฉ๋๋ค.
๋ฆด๋ฆฌ์ฆ ๋ง๋ฌด๋ฆฌ๋ฅผ ํ๋ฉด develop์ main์ด ๋์ผํ ์ํ๊ฐ ๋ฉ๋๋ค.
develop ์์ Push๋ฅผ ์งํํฉ๋๋ค.
๊ทธ๋ผ ๋ก์ปฌ๊ณผ ๋ฆฌ๋ชจํธ์ ์ํ๊ฐ ๋ชจ๋ develop๊ฐ ๋ฉ๋๋ค.
๋ธ๋์น > ์ ๋ธ๋์น > feature/add-file3 ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค.
๊ทธ ํ ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋์์ file3 ํ์ผ์ ์์ฑํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ file3 ํ์ผ์ ์ปค๋ฐํฉ๋๋ค.
๊ทธ ํ ํ์ฌ add-file3 ํ์ผ์ Push ํฉ๋๋ค.
๊ทธ ํ GitHub๋ก ๋ค์ด์์ Pull requests > New pull request ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ธ๋์น๋ฅผ feature/add-file3 ์์ develop ๋ก ์ค์ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ Create pull request๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ค์ ํ์ ์ ํ ๋๋ Reviewers(๋ฆฌ๋ทฐ์ด) ์ Assignees(์๋ฝ์ธ) ์ ์ค์ ํด์ค๋๋ค.
๊ทธ๋ผ ์์ ๊ฐ์ด PR์ด ์ ์์ ์ผ๋ก ๋ฑ๋ก์ด ๋์์ต๋๋ค.
์์ ๋ฐ๋ผ์ PR(Pull Request)์ Closeํ๊ฑฐ๋, Merge ํ๊ฑฐ๋ ๋ฑ์ ์ฌ๋ฌ ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
ํ์ฌ๋ Merge pull request๋ฅผ ํตํด Confirm merge๋ฅผ ์งํํฉ๋๋ค.
๊ทธ ํ ์์คํธ๋ฆฌ์์ develop > Pull ์ ํตํด ๋ฆฌ๋ชจํธ ์ํ๋ฅผ ๋น๊ฒจ๋ฐ์ ์ ์์ต๋๋ค.
๊ทธ๋ผ ์์์ Merge ํ๋ PR(Pull Request)๊ฐ ์ ์์ ์ผ๋ก Pull์ด ๋ฉ๋๋ค.
(v1.0.0 ์์ ํ๊ทธ ํ์๊ฐ ์๋๋ฐ, ํด๋น ํ๊ทธ๋ฅผ ํตํด ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.)
• ์ด์ ์ปค๋ฐ ์์ : ์ปค๋ฐ > ์ปค๋ฐ ์ต์ > ๋ง์ง๋ง ์ปค๋ฐ ์ ์
• ์ํ๋ commit๋ง branch์ ๋ถ์ด๊ธฐ: ์ฒด๋ฆฌํฝ ํค์๋
๋๊ธ