
๐ ์ฉ์ด ์ ๋ฆฌ
Repository : ํ๋ก์ ํธ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ ์ฅ์
Local Repository : ๋ด PC์์ ๊ด๋ฆฌํ๋ Git ์ ์ฅ์
Remote Repository : ์๋ฒ๋ ๋คํธ์ํฌ์ ์๋ ์ ์ฅ์ (ex : GitHub)
Init : ์์ค์ฝ๋ ํ์ผ์ Git์ผ๋ก ๊ด๋ฆฌํ๊ธฐ์ํด Git ์ ์ฅ์๋ฅผ ์ด๊ธฐํ
( Init ์ ๊น์ง๋ ์ผ๋ฐ ํด๋์ ํด๋น )
Clone : Remote Repository๋ฅผ Local Repository๋ก ๋ณต์ฌํ์ฌ ๋ด PC์ ์๋ก์ด ์ ์ฅ์ ์์ฑ
( GitHub ์ ์คํ์์ค ํน์ ์ด๋ฏธ ๋ง๋ค์ด์ง ํ๋ก์ ํธ ๊ฐ๋ฐ์ ์ฐธ์ฌ์ )
Branch : Git Repository ์์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก main branch๊ฐ ์์ฑ๋๋ฉฐ,
Branch๋ฅผ ํตํด ์ฌ๋ฌ ์์ ์ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์ ์ฅ์์์ ์งํ์ด ๊ฐ๋ฅํ๋ค.
Commit : ํ๋ก์ ํธ์์ ์์ ํ ์ฌํญ ์ค ์๋ฏธ์๋ ๋ณ๊ฒฝ ์์ ๋ค์ Git Repository์ ๊ธฐ๋กํ๋ ๋์
( Local Repository์๋ ๋ฐ์ O, Remote Repository์๋ ์์ง ๋ฐ์ X )
Push : Commitํ ํ์ผ์ Remote Repository์ ๋ฐ์
Merge : 2๊ฐ ์ด์์ Branch๋ฅผ ํ๋๋ก ํฉ์น๋ ์์
Fetch : Local Repository์๋ ์์ง๋ง Remote Repository์๋ ๋ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์ด
( Merge ๋์ง ์์ผ๋ฉฐ, ๋ณ๊ฒฝ ๋ด์ฉ๋ค์ ํ์ธ๋ง ํ๋ ค๊ณ ํ ๋ )
Pull : Local Repository์๋ ์์ง๋ง Remote Repository์๋ ๋ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์,
์๋์ผ๋ก ํ์ฌ ์์ ์ค์ธ Local Branch์ Merge
( ์ฆ, Fetch + Merge )
๐ Branch๋?
Git Repository ์์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก main branch๊ฐ ์์ฑ๋๋ฉฐ main branch๋ ์ธ์ ๋ ์ง ๋ฐฐํฌ/์ถ์๊ฐ ๊ฐ๋ฅํ ์ฝ๋๋ค๋ง ์ฌ๋ผ์ ์์ด์ผ ํ๋ค. ๋ฐ๋ผ์ main branch๋ฅผ ๋์์ผ๋ก ํ๋ Commit, Push, Pull์ Repository ์์ฑ ํ ํ๋ก์ ํธ ์ด๊ธฐ ์ธํ ์ ์ ์ธํ ๊ฒฝ์ฐ์๋ ๋ฐ์ํ์ง ์๋๋ก ์ฃผ์ํด์ผํ๋ค.
๊ฐ๋จํ ๊ฐ์ธ ํ๋ก์ ํธ๋ main branch ์์์๋ง ์์ ํด๋ ์ถฉ๋ถํ๋ค. ํ์ง๋ง ํ์ ๊ฐ๋ฐ ํ๋ก์ ํธ์์ ๋ชจ๋ ๊ฐ๋ฐ์ด main branch ์์์ ์งํ๋ ๊ฒฝ์ฐ ๊ฐ์ ํ์ผ์ ๋์ ์์ , ๋ค์์ ์ฌ์ฉ์๊ฐ commit ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฒ์ด Branch์ด๋ค.
main branch๋ฅผ ๋๋์ฑ๋ก ์ต์ ๋ฒ์ ์ main branch์์ ์๋ก์ด branch๋ฅผ ๋ฐ ํด๋น branch์์ ์์ ํ ๋ค ๋ชจ๋ ๊ฒ์ฆ์ด ์๋ฃ๋ ํ main branch๋ก ํฉ์น๋ ๋ฐฉ์์ผ๋ก ์์ ์ ์งํํ๋ค.
branch๋ฅผ ๋๋๋ ๊ธฐ์ค์ ์์ ์, ๊ธฐ๋ฅ ์ถ๊ฐ, ๋ฒ๊ทธ ์์ ๋ฑ ๋ค์ํ๋ค.
์์ ํ branch๋ฅผ main branch์ ํฉ์น๋ ๊ฒ์ merge๋ผ๊ณ ํ๋ฉฐ, merge ์์ ์ ์์ฒญํ๋ ๊ฒ์ pull request ๋ผ๊ณ ํ๋ค.
๐ ํ๋ก๊ทธ๋จ ์ ๋ฆฌ
GitHub Desktop : GitHub์ Repository๋ฅผ Desktop์ ๋ค์ด๋ฐ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋์์ฃผ๋ ํ๋ก๊ทธ๋จ
๐ GitHub Desktop ์ฌ์ฉ ๋ฐฉ๋ฒ
# Push ๋ฐฉ๋ฒ - ์ฒ์ ํ๋ก์ ํธ ์์ฑ์
1. GitHub Desktop์์ [ Current repository ] - [ Add ] - [ Clone Repository ] ํด๋ฆญ ํ Repository ์ ํ
2. GitHub Desktop์์ Show in Explorer ํด๋ฆญ
3. Unity์์ ์๋ก์ด ํ๋ก์ ํธ ์์ฑ
4. Unity์์ Assets ํด๋ [ ์ฐํด๋ฆญ ] - [ Show in Explorer ] ํด๋ฆญ
5. 2๋ฒ์ ํตํ Local Repository ์ฐฝ์ 4๋ฒ์ ํตํ ํ๋ก์ ํธ์ ๋ด์ฉ๋ฌผ๋ค์ ๋ณต๋ถ
6. GitHub Desktop์์ ๋ณ๊ฒฝ์ฌํญ๋ค์ ๋ํ Summary, Description ์์ฑ ํ Commit to master ํด๋ฆญ
7. Commit to master ์๋ฃ ํ Push origin ํด๋ฆญ
# Push ๋ฐฉ๋ฒ - ์๋ก์ด branch ์์ฑ์
1. GitHub Desktop์์ [ Current repository ] ์์ Repository ์ ํ
2. GitHub Desktop์์ [ Current branch ] ์์ Filter ์ ๋ ฅ์ฐฝ์ ์๋ก์ด Branch ์ด๋ฆ ์์ฑ ํ Create new branch ํด๋ฆญ
( GitHub Webpage์ ๋ค๋ฅธ ๊ฐ๋ฐ์์๊ฒ๋ ์๋ก ๋ง๋ Branch๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์๋ Publish branch ํด๋ฆญ )
3. GitHub Desktop์์ Show in Explorer ํด๋ฆญ
4. Unity์์ Assets ํด๋ [ ์ฐํด๋ฆญ ] - [ Show in Explorer ] ํด๋ฆญ
5. 3๋ฒ์ ํตํ Local Repository ์ฐฝ์ 4๋ฒ์ ํตํ ํ๋ก์ ํธ์ ๋ด์ฉ๋ฌผ๋ค์ ๋ณต๋ถ
6. GitHub Desktop์์ ๋ณ๊ฒฝ์ฌํญ๋ค์ ๋ํ Summary, Description ์์ฑ ํ Commit to master ํด๋ฆญ
7. Commit to master ์๋ฃ ํ Push origin ํด๋ฆญ
8. ํด๋น branch์์ ์์ ํ ๋ด์ฉ์ main branch์ ํฉ์น๊ธฐ ์ํด Create Pull Request ํด๋ฆญ
# Pull ๋ฐฉ๋ฒ
1. GitHub Desktop์์ Fetch origin ํด๋ฆญ
( Pull๋ก ๊ฐ์ ธ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ๋ฌด๋ฅผ ์ ์ ์๋ค. )
2. Pull origin ํด๋ฆญ
( ์ ์ฅ์์์ ๋ณ๊ฒฝ์ฌํญ์ ๋ค์ด )
๐ GitHub Desktop ์ฐธ๊ณ ์ฌํญ
1. ํ๋์ ์ค ํ์ ์ ํ ๋ฐ ํด์ ๋ฅผ ํตํด Commit ์ฌ๋ถ๋ฅผ ์ ํํ ์ ์๋ค.
2. changed files์์ [ ์ค๋ฅธ์ชฝ ๋ง์ฐ์ค ] - [ Discard all changes ] ๋ฅผ ํตํด ์์ ์ ๋ณ๊ฒฝ์ฌํญ์ ์ง์ฐ๊ณ ํ์ผ์ ๋ง์ง๋ง์ผ๋ก Commitํ ์ํ๋ก ๋๋๋ฆด ์ ์๋ค.
( 2๋ฒ์ ํ์ผ๋จ์๋ก Discardํ๋ ๊ฒ์ด๊ณ 1๋ฒ์ฒ๋ผ ์ค๋จ์๋ก๋ Discard๊ฐ ๊ฐ๋ฅ)
3. ์ถฉ๋ ๋ฐ์์ Merge ๋๊ตฌ๋ฅผ ํตํด ์์ ํ๋ค.
๐ Unity ํ๋ก์ ํธ๋ฅผ GitHub๋ก ๊ด๋ฆฌ์ ์ฃผ์์ฌํญ
1. Unity ๋ฒ์ ์ ํต์ผํ๋ค.
( meta ํ์ผ ๋ด์ฉ์ด ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฅด๊ธฐ ๋๋ฌธ )
2. Asset ์ง๋ ฌํ ๋ฐฉ์์ Binary๊ฐ ์๋ Text๋ก ํต์ผํ๋ค.
( [ Edit ] - [ Project Settings ] - [ Editor ] - [ Asset Serialization ] ์ Mode๋ฅผ Force Text๋ก ๋ณ๊ฒฝ )
3. meta ํ์ผ์ ์์ฑ/ํ๊ดด ํจํด ์ฃผ์
( Unity๋ meta ํ์ผ์ ๊ธฐ๋ก๋ guid๋ก Scene์ ํฌํจ๋ Prefab, Prefab์ ํฌํจ๋ Model, Model์ด ์ฌ์ฉํ๊ณ ์๋ Material, Material์ ๋ค์ด๊ฐ Texture๋ฑ์ ์ฐพ์๋ด ์๋ก ์ฐ๊ฒฐ์์ผ์ค๋ค. ๋ฐ๋ผ์ meta ํ์ผ์ด ์ฌ์์ฑ๋์ด guid ๊ฐ์ด ๋ฐ๋๋ฉด ์ฐธ์กฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ )
( Editor๊ฐ ์๋ ํ์๊ธฐ์์ ํ์ผ์ ์ด๋์ํค๊ฑฐ๋ ์ด๋ฆ์ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ, .meta ํ์ผ์ commit ํ์ง ์๊ณ pushํ ๊ฒฝ์ฐ,
.meta ํ์ผ์ ์๋ณธ์ด ์๋ ๊ฒฝ์ฐ์ meta ํ์ผ์ด ์ฌ์์ฑ )
( ๋ฐ๋ผ์ GitHub๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ค๋ฅธ ๊ฐ๋ฐ์์๊ฒ ํ์ผ์ ๋ณด๋ผ ๊ฒฝ์ฐ .meta ํ์ผ์ด ํฌํจ๋ Unity Package๋ก ํ์ผ์ ์ ๋ฌ )
4. meta ํ์ผ์ ๊ฐฑ์ ์ฃผ์
( ํ์ผ Parameter๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ Save Project/Scene, Unity Editor ์ข ๋ฃ ์์ ๊ธฐ์ค์ผ๋ก meta ํ์ผ์ด ๊ฐฑ์ )
5. Git ์๋ฒ์์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์์ฌ๋๋ง๋ค meta ํ์ผ ๊ฐฑ์ ์ฃผ์
( [ Edit ] - [ Project Settings ] - [ Editor ] - [ Asset Serialization ] ์์ [ Version Control ] ๊ณผ [ Asset Serialization ] ์ ํต์ผํ๊ณ Unity Editor์ ๋ฒ์ ์ ํต์ผ )
( [ Version Control ] ์ Visible Meta Files๋ฅผ, [ Asset Serialization ] ์ Force Text๋ฅผ ๊ถ์ฅ )