๊ฐ์ธ์ ์ผ๋ก ํ๋ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊น ๋ธ๋์น๋ฅผ ์ฌ์ฉํ ๊ฒฝํ์ด ์๋๋ฐ, ๋๋ถ์ ์ด๋ฒ ์ฑํฐ๋ ์์ํ๊ฒ ํ์ตํ ์ ์์์ต๋๋ค๐
๋ธ๋์น
๋ธ๋์น๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ด๋ค ์์ ์ ์งํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ฐ๋ ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ฐ๋ฐ์ ํ ๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋๋ฐ ๋ธ๋์น ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ์๋ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ์ํ ์์ด ๊ฐ๊ฐ์ ๊ธฐ๋ฅ๋ค์ผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
๋ธ๋์น์๋ ํญ์ ์ ์ง๋๋ ๋ฉ์ธ ๋ธ๋์น๋ค (master, develop)๊ณผ ์ผ์ ๊ธฐ๊ฐ ๋์๋ง ์ ์ง๋๋ ๋ณด์กฐ ๋ธ๋์น๋ค(feature, release, hotfix)์ ํฌํจํด์ ์ด 5๊ฐ์ง์ ๋ธ๋์น๋ฅผ ์ด์ฉํฉ๋๋ค.
- Master: ์ ํ์ผ๋ก ์ถ์(๋ฐฐํฌ)๋ ์ ์์ ์ ๋๋ก ๋ฒ๊ทธ๊ฐ ์๋ ๋ธ๋์น์ ๋๋ค.
- Develop: ๋ฒ ํ ๋ฒ์ . ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํ ๋ธ๋์น๋ค์ ๋ณํฉํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ธ๋์น๋ก ๋ฒ๊ทธ๊ฐ ๋ชจ๋ ์์ ๋๊ณ ๋ฐฐํฌ ๊ฐ๋ฅํ ์์ ์ ์ธ ์ํ๋ผ๋ฉด master ๋ธ๋์น์ ๋ณํฉํฉ๋๋ค.
- Feature: ์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ฐ ๋ฒ๊ทธ ์์ ์ด ํ์ํ ๋๋ง๋ค develop ๋ธ๋์น๋ก๋ถํฐ ๋ถ๊ธฐํ ๋ธ๋์น์
๋๋ค.
๋ณดํต [feature/๊ธฐ๋ฅ์์ฝ] ํ์์ผ๋ก ๋ค์ด๋ฐํฉ๋๋ค. - Release: ๋ฐฐํฌ๋ฅผ ์ํ ์ ์ฉ ๋ธ๋์น๋ก ๊ฐ๋ฐ ๋จ๊ณ๋ฅผ ๋๋๋ฐ ๋์์ฃผ๋ ๋ธ๋์น์ ๋๋ค. develop ๋ธ๋์น์์ ๋ฐฐํฌํ ์ ์๋ ์์ค์ ๊ธฐ๋ฅ์ด ๋ชจ์ด๊ฑฐ๋ ์ ํด์ง ๋ฐฐํฌ ์ผ์ ์ด ๋๋ฉด release ๋ธ๋์น๋ฅผ ๋ถ๊ธฐํฉ๋๋ค.
- Hotfix: ๋ฐฐํฌํ ๋ฒ์ ์์ ๊ธด๊ธํ๊ฒ ๋ฒ๊ทธ๋ฅด ์์ ํด์ผ ํ ๋, master ๋ธ๋์น์์ ๋ถ๊ธฐํ ๋ธ๋์น์ ๋๋ค.
์๋ก ๋ธ๋์น๋ฅผ ๋ง๋ค์ด๋ ๋ฐ๋ก ๋ถ๊ธฐ๊ฐ ๋๋ ๊ฒ์ ์๋๋๋ค. ๊ฐ ๋ธ๋์น๋ง๋ค ๋ฌ๋ผ์ง ์ฝ๋๊ฐ ์๊ธด ์ดํ๋ถํฐ ๋ถ๊ธฐ๊ฐ ์์๋ฉ๋๋ค.
๋ธ๋์น ๋ช ๋ น์ด
๊ธฐ๋ณธ ๋ช ๋ น์ด
์๋ก์ด ๋ธ๋์น ์์ฑ
$ git branch
์๋ก์ด ๋ธ๋์น ์ด๋ฆ
์๋ก์ด ๋ธ๋์น ์์ฑ ํ ํด๋น ๋ธ๋์น๋ก ์ ํ
$ git switch -c
์๋ก์ด ๋ธ๋์น ์ด๋ฆ$ git checkout -b
์๋ก์ด ๋ธ๋์น ์ด๋ฆ
๋ธ๋์น ๋ชฉ๋ก ํ์ธ
$ git branch
๋ธ๋์น ๋ชฉ๋ก๊ณผ ๊ฐ ๋ธ๋์น์ ์ต๊ทผ ์ปค๋ฐ ํ์ธ
$ git branch -v
๋ธ๋์น ์ญ์
$ git branch -d
์ญ์ ํ ๋ธ๋์น ์ด๋ฆ$ git branch -D
ํด๋น ๋ช ๋ น์ด๋ ๋ณํฉํ์ง ์์ ๋ธ๋์น๋ฅผ ๊ฐ์ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ธ๋์น ์ ํ
$ git switch
๋ธ๋์น ์ด๋ฆ$ git checkout
๋ธ๋์น ์ด๋ฆ
๋ธ๋์น ๋ณํฉ
- master ๋ธ๋์น๋ก dev ๋ธ๋์น๋ฅผ ๋ณํฉํ ๋ (master ← dev)
$ git checkout master
$ git merge dev
๋ก๊ทธ์ ๋ชจ๋ ๋ธ๋์น๋ฅผ ๊ทธ๋ํ๋ก ํํ
$ git log --branches --graph --decorate
์์ง commit ํ์ง ์์ ์์ ์ ์คํ์ ์์๋ก ์ ์ฅ
$ git stash
merge์ rebase์ ์ฐจ์ด
๋ ๋ช
๋ น์ด ๋ชจ๋ ๊ฐ๊ฐ์ ๋ธ๋์น์ ์๋ ์ฝ๋๋ค์ ํฉ์น๋ ๊ฒ์ ๋์ผํฉ๋๋ค. ํ์ง๋ง merge๋ ๋ธ๋์น๋ฅผ ํตํฉํ๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ ๋ด์ฉ์ ์ปค๋ฐ ๊ธฐ๋ก์ด ๋ชจ๋ ๋จ์์์ด ์ด๋ ฅ์ด ๋ณต์กํฉ๋๋ค. ํํธ, rebase๋ ๋ง ๊ทธ๋๋ก ๋ฒ ์ด์ค๋ฅผ ์๋กญ๊ฒ ์ค์ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด์ ์ ์ปค๋ฐ ์ด๋ ฅ๋ค์ด ๋จ์ง ์์ ๋จ์ํด์ง๋๋ค. ๋ง์ฝ ์ ํํ๊ฒ ๋ชจ๋ ์ปค๋ฐ์ ๋จ๊ฒจ์ผ ํ๋ค๋ฉด merge๋ฅผ ์ฐ๋ ๊ฒ์ด ์ข์ต๋๋ค.git rebase -i HEAD~~
๋ผ๊ณ ์น๋ฉด ์ด์ ํ ๋จ๊ณ ์ฌ๋ผ๊ฐ๋ ๊ธฐ๋ฅ์ ํ๊ฒ ๋ฉ๋๋ค.
ํ ๋ธ๋์น์์ ๋ค๋ฅธ ๋ธ๋์น๋ก ์์
ํ ๋ด์ฉ์ ์ฎ๊ธฐ๋ ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก Cherry-pick ์ด๋ ๊ฒ๋ ์์ต๋๋ค.
Git์ cherry-pick ์ ์ปค๋ฐ ํ๋๋ง Rebase ํ๋ ๊ฒ์
๋๋ค. ํ ํฝ ๋ธ๋์น์ ์๋ ์ปค๋ฐ ์ค์์ ํ๋๋ง ๊ณ ๋ฅด๊ฑฐ๋ ํ ํฝ ๋ธ๋์น์ ์ปค๋ฐ์ด ํ๋๋ฐ์ ์์ ๋ Rebase ๋ณด๋ค ์ ์ฉํฉ๋๋ค.
'TIL > Git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Git] Mac์์ xcrun error ํด๊ฒฐ (0) | 2022.05.08 |
---|---|
TIL 10: Git ๊ธฐ์ด (0) | 2021.07.30 |