[Git] Github ๊ฐ์ ์ ์ฅ์ ํจ๊ป ์ฐ๊ธฐ(feat. Github Flow)
์๋ ํ์ธ์๐ Foma๐ ์ ๋๋ค!
์ค๋์ Git์ผ๋ก ๊ฐ์ ์ ์ฅ์๋ฅผ ํจ๊ป ์ฐ๋ฉด์ ํ์ ํ๋ ๋ฒ์ ๋ํด์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
๋ค์ํ ํ์ ๋ฐฉ์ ์ค Gihub Flow์ ๋ํด์ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์!
(Visual Studio ๊ธฐ์ค์ผ๋ก ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.)
1. ํจ๊ป ์ธ ์ ์ฅ์ ๋ง๋ค๊ณ ์ด๋ํ๊ธฐ
Github์ผ๋ก ๋ค์ด๊ฐ์ New๋ฒํผ์ ๋๋ฌ ์๋ก์ด ์ ์ฅ์๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์.
์ํ๋ ์ ์ฅ์ ์ด๋ฆ์ ์ ๊ณ Create Repository๋ฅผ ๋๋ฌ์ค๋๋ค.
๋ง๋ค์ด์ค ์ ์ฅ์์ Settings๋ก ๋ค์ด๊ฐ์ ์ผ์ชฝ ํญ์ ์๋ Manage access๋ฅผ ๋๋ฌ์ค๋๋ค.
Inviete a collaborator ๋ฒํผ์ ๋๋ฌ ํจ๊ป ํ ์ฌ๋์ ์ฐพ์์ค๋๋ค.
ํจ๊ปํ ์ฌ๋์ ๊ณ ๋ฅด๊ณ Add to this repository๋ฅผ ๋๋ฌ ์ถ๊ฐํด์ค๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ด๋ํ ์ฌ๋์ด ๋จ๊ณ ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ๋ผ๊ณ ๋น๋๋ค.
2. Git ํด๋ก ํ๊ธฐ (์ด๋ฏธ ๋ง๋ค์ด์ ธ์๋ ์ ์ฅ์ ํจ๊ป ์ฐ๊ธฐ)
๋ง์ฝ ์ ๊ฐ ๋ง๋ ์ ์ฅ์๊ฐ ์๋๋ผ ์๋๋ฐฉ์ด ๋ง๋ ์ ์ฅ์๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
์๋๋ฐฉ์ด ๋ง๋ ์ ์ฅ์๋ก ๋ค์ด๊ฐ์ ์ด๋ก์ Code ๋ฒํผ์ ๋๋ฅด๊ณ HTTPSํญ์ ์ ํํ ๋ค url์ ๋ณต์ฌํด์ค๋๋ค.
Visual Studio๋ฅผ ์ผ ๋ค shift + command + p ๋ฅผ ๋๋ฌ์ฃผ์ธ์.
๊ทธ ๋ค์ git์ด๋ผ๊ณ ์น๋ฉด Git:Clone์ด ๋ฐ๊ฑฐ์์. ํด๋ฆญํด์ฃผ์ธ์!
์์์ ๋ณต์ฌํ url์ ๋ถ์ฌ๋ฃ๊ณ ์ํฐ๋ฅผ ์ณ์ฃผ๊ณ ์ํ๋ ๊ณณ์ ์ ์ฅํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ค๋ฅธ์ชฝ ํ๋จ์ ํด๋ก ํ ์ ์ฅ์ ์ผค๊บผ๋๋ผ๊ณ ๋ฌผ์ด๋ณด๋๋ฐ Open์ ๋๋ฌ์ ์ผ์ฃผ์ธ์!
3. ์๋ก์ด Branch ๋ง๋ค๊ธฐ(๋๋ง์ ๊ณต๊ฐ ๋ง๋ค๊ธฐ)
์ด๋ ๊ฒ ํด๋ก ํ ์ ์ฅ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ๋ main ๋ธ๋์น์ ์์ด์.
๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ๋ ์ ์ฅ์๋ฅผ ํจ๋ถ๋ก ๋ฐ๊พธ๋ฉด ์๋๊ฒ ์ฃ ?
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋๋ง ์ฝ๋๋ฅผ ๋ฐ๊ฟ ์ ์๋ ๊ณต๊ฐ(Branch)์ ๋ฐ๋ก ๋ง๋ค์ด์ค๋๋ค.
Git Clone ํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก shitf + command + p ๋ฅผ ๋๋ฌ์ฃผ์ธ์!
๊ทธ๋ฆฌ๊ณค Create ๋ผ๊ณ ์น๋ฉด Git: Create Branch๊ฐ ๋ณด์ผ๊ฑฐ์์ ๋๋ฌ์ค๋๋ค.
์ํ๋ ์ด๋ฆ์ ์ ์ด์ฃผ์๊ณ ์ํฐ๋ฅผ ๋๋ฌ์ฃผ๋ฉด ๋ธ๋์น๊ฐ ์์ฑ์ด ๋ฉ๋๋ค.
4. ๋์ ์ฝ๋ ์ ์ฅํ๊ณ ์ ์ฅ์์ ์ฌ๋ฆฌ๊ธฐ (Commit & Push)
๋์ ๋ธ๋์น์์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ ์ฅ(์ปค๋ฐ)ํด์ค๋๋ค.
์ผ์ชฝ ํญ์ ๊ฐ์ง๋ชจ์์ ๋๋ฌ์ฃผ์๊ณ ์ปค๋ฐํ ๋ด์ฉ์ ์ ์ ๋ค์ ์ฒดํฌ๋ฒํผ์ ๋๋ฌ์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ์ ์ฅํ ๋ด์ฉ์ ํธ์ฌ๋ฅผ ํด์ผ ์๊ฒฉ ์ ์ฅ์์ ์ ์ฅ์ด ๋ฉ๋๋ค.
์ฒดํฌ๋ฒํผ ์์์ 3๊ฐ ์ ๋ชจ์ ๋ฒํผ์ ๋๋ฌ์ฃผ์๊ณ Push๋ฅผ ๋๋ฌ์ฃผ๋ฉด ์๊ฒฉ ์ ์ฅ์์ ๋ด ๋ธ๋์น์ ์ปค๋ฐ์ด ์ ์ฅ๋ฉ๋๋ค.
Github์ผ๋ก ์ด๋ํด์ ์ค์ ๋ก ์ปค๋ฐ์ด ๋์๋์ง ํ์ธํ๋ ค๋ฉด ํด๋น ๋ ํฌ์งํ ๋ฆฌ์ Insights ํญ์ ๋๋ฅด๊ณ ์ผ์ชฝ์ Network๋ก ๋ค์ด๊ฐ๋ฉด
์๋ก์ด ๋ธ๋์น์์ ์๊ธด ์ปค๋ฐ๋ค์ด ํ๋์ ์ค๋ก ์ ์ฅ๋ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
5. ๊ณต์ฉ ์ ์ฅ์์ ๋ด ์ฝ๋๋ฅผ ๋ฃ์ด๋ฌ๋ผ ์์ฒญํ๊ธฐ(Pull Request)
์ด์ ์ด๋ ๊ฒ ์์ ํ ๋ด ๋ธ๋์น์ ์ฝ๋๋ค์ ๊ณต์ฉ ์ ์ฅ์๋ก ํฉ์น๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
์ฐ์ ์ ๊ฐ์ด ์์ ํ๋ ํ์ ์์๊ฒ ๋์ ์ฝ๋๋ค์ ํฉ์ณ๋ฌ๋ผ๊ณ ์์ฒญํด์ผ ํฉ๋๋ค.
์์ฒญํ๋ ๋ฐฉ๋ฒ์ ํด๋น ๋ ํฌ์งํ ๋ฆฌ๋ก ์ด๋ํด์ Pull requests ํญ์ ๋๋ฌ์ค๋๋ค.
์๋์ ๊ฐ์ด ์์ ํ ๋ด์ฉ์ด ์์ผ๋ฉด Compare & pull request๋ฅผ ํ๋ผ๊ณ ์๋ฆผ์ด ๋ ์์๊ฑฐ์์.
๋ฒํผ์ ๋๋ฌ์ ๋ค์ด๊ฐ๋ฉด pull request๋ฅผ ๋ง๋ค ์ ์๋ ํ๋ฉด์ด ๋์ฌ๊ฑฐ์์.
์ํ๋ ๋ด์ฉ์ ์ ๊ณ Create pull request ๋ฒํผ์ ๋๋ฌ์ค๋๋ค.
6. ๊ณต์ฉ ์ ์ฅ์์ ๋ธ๋์น ํฉ์น๊ธฐ(Git Merge)
์ ๊ฐ ์ฌ๋ฆฐ ํ๋ฆฌํ์คํธ๋ฅผ ํ์ ์๊ฐ ์ด์์๋ค๊ณ ํ์ธํ๊ณ ์์ฒญ์ ์๋ตํ๋ ค๋ฉด ์๋์ ๊ฐ์ด Merge pull request ๋ผ๋ ๋ฒํผ์ด ์๊น๋๋ค.
(์ง๊ธ์ ๊ถํ์ด ์ ํํ ๋ ์์ด์ ๊ทธ๋ ์ง๋ง ์๋๋ ๋จ์ง ์์์.)
๋ฒํผ์ ๋๋ฌ์ฃผ๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ด ์ฑ๊ณต์ ์ผ๋ก merge๊ฐ ๋์๋ค๊ณ ๋น๋๋ค.
์๊น์ ๊ฐ์ด insight์ network๋ก ๊ฐ์ ํ์ธํด๋ณด๋ฉด ๋ด ๋ธ๋์น๊ฐ ๊ณต์ฉ ๋ธ๋์น์ ํฉ์ณ์ ธ์์๊ฑฐ์์!
7. ํฉ์ณ์ง ๊ณต์ฉ ์ ์ฅ์ ๋ถ๋ฌ์ค๊ธฐ (Git Pull)
ํ์ ์์ ์ฝ๋์ ํฉ์ณ์ ธ ๋ฐ๋ ๊ณต๋ ์ ์ฅ์์ ์ฝ๋๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ฉด
์์ชฝ์ ์๋ Source Control ์์ ์ธ ์ ๋ฒํผ์ ๋๋ฅด๊ณ Source Control Repositorie๋ฅผ ๋๋ฌ์ค๋๋ค.
๊ทธ๋ฆฌ๊ณค ์๋์์ ๊น๋ชจ์ ๋ฒํผ์ ๋๋ฌ์ค๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด Branch๋ค์ด ๋ณด์ผ๊ฑฐ์์. ์ด ์ค ๊ณต๋์ ์ฅ์์ ๋ธ๋์น์ธ main์ ๋๋ฌ์ค๋๋ค.
๊ทธ๋ฆฌ๊ณค ์ปค๋ฐ๋ฒํผ ์์ ์ธ์ ๋ฒํผ ๋ชจ์์ ๋๋ฅธ ๋ค Pull ๋ฒํผ์ ๋๋ฌ์ค๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๊ณต๋ ์ ์ฅ์์ ์ฝ๋๋ก ํ๋ก์ ํธ๊ฐ ๋ฐ๋ ๊ฑฐ์์!
8. ๋ด ๋ธ๋์น์ ๊ณต๋ ์ ์ฅ์ ์ฝ๋ ๋ถ๋ฌ์ค๊ธฐ(Git Pull from)
ํ์ ํ๋ ์ฌ๋์ ํ๋ฆฌํ์คํธ๋ฅผ ๋ฐ๊ณ ํฉ์ณค๋ค๋ฉด ๊ณต๋ ์ ์ฅ์์ ์์ ์ ์ ์ฅ์๊ฐ ๋ค๋ฅด๊ฒ ์ฃ ?
์ถฉ๋์ด ์ผ์ด๋๋๊ฑธ ๋ง๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๊ณต๋ ์ ์ฅ์์ ์ฝ๋๋ฅผ ๋์ ๋ธ๋์น๋ก ๊ฐ์ ธ์์ผ ํ ๊ฑฐ์์.
์ด ๋๋ ๋๊ฐ์ด ์ธ์ ๋ฒํผ์ ๋๋ฌ์ฃผ๊ณ ์๋๋ก ๋ด๋ ค Pull,Push์ ์๋ Pull from ๋ฒํผ์ ๋๋ฌ์ค๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๊ณต๋ ์ ์ฅ์์ url์ด ๋ฐ๊ฑฐ์์.
๋๋ฌ์ฃผ๋ฉด ํ์ฌ ์๋ ๋ธ๋์น๋ค์ด ์๋๋ฐ ์ฐ๋ฆฌ๋ ๊ณต๋ ์ ์ฅ์์ ์ฝ๋๊ฐ ํ์ํ๋ origin/main์ ๋๋ฌ์ค๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์์ ์ ๋ธ๋์น๊ฐ ๊ณต๋ ์ ์ฅ์์ ์ฝ๋๋ก ๋ฐ๋๋ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ์ค๋์ ํ๋์ ์ ์ฅ์๋ฅผ ๊ฐ์ง๊ณ ํ์ ์์ ํจ๊ป ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์์ต๋๋ค.
ํน์๋ผ๋ ๊ถ๊ธํ์ ์ ์ด ์๊ฑฐ๋ ํ๋ฆฐ ๋ถ๋ถ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!