๋ธ๋์น ์ด๋ฆ ๊ท์น
- ๊ธฐ๋ฅ ๊ฐ๋ฐ: feature/login, feature/select-product
- ์ถ์ ์ค๋น: release-1.3, release-1.4
- ๊ธด๊ธ ์์ : hotfix-1.2.1
์ปค๋ฐ์ ํด์ผ ๊ทธ๋๋ถํฐ ๋ธ๋์น๋ค.
๋ณํฉ
- ๋ธ๋์น๋ฅผ ์์ฑํ๋ค๋ ๊ฑด, ํ์ ์ ์ํ ๊ฒ
- ๊ทธ๋์ ๋ธ๋์น๋ฅผ ๋ณํฉํ๋ค. : ๊นํ๋ธ์์
๋ณํฉ ๋ฐฉ๋ฒ : fast-forward์ 3ways
fast-forward
A branch์์ B branch๋ฅผ ์์ฑํ ์์ ๋ถํฐ,
- A branch์๋ ์๋ฌด๋ฐ ์ถ๊ฐ ๊ตฌํ์ ํ์ง ์๊ณ
- B branch๋ง ์ถ๊ฐ ๊ตฌํํ ๋ค
- B branch์ A branch๋ฅผ ํฉ์น๋ฉด -> A์ B๊ฐ ๋ถ์ผ๋ฉด ๋๋จ.
Before merge:
main: A---B
\
feature: C---D
After fast-forward merge:
main: A---B---C---D
3ways
์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ ๋ต!
A branch์์ B branch๋ฅผ ์์ฑํ ์์ ๋ถํฐ,
- A branch์์ ์ถ๊ฐ ๊ตฌํ์ ํ๊ณ
- B branch์์๋ ์ถ๊ฐ ๊ตฌํ์ ํ๊ณ
- B branch์ A branch๋ฅผ ํฉ์น๋ฉด -> A branch์ B branch๊ฐ ์๋ก ๋น๊ตํ์ฌ ๋ฐ๋ ๊ฒ์ ์ ๋ฆฌํ์ฌ ํฉ์น๋ ์ ๋ต
Before merge:
A---B---E---F (main)
\
C---D (feature)
After 3-way merge:
A---B---E---F---G (main)
\ /
C-------D
github์ ๋ณํฉ ๊ด๋ จ ๊ธฐ๋ฅ
- main ๋ธ๋์น ๋ณดํธ
- ๋ ํฌ์งํ ๋ฆฌ Settings์ Branches์์ main branch protect ์ ๋ต ์ค์ ๊ฐ๋ฅ
- ์ถ๊ฐ ๋ธ๋์น -> main ๋ธ๋์น ๋ณํฉ : Pull Request
- ์ถฉ๋ ์ผ์ด๋๋์ง ํ์ธํด์ค.
- PR ๋ฉ์์ง ์ ๊ฒฝ ์ธ ๊ฒ! (++ PR Template ์ค์ ๊ฐ๋ฅํจ !)
- merge
- merge commit
- branch ์ญ์
์ฐธ๊ณ (Creating a pull request template for your repository)
https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository
merge๋ github์ ๋ก์ปฌ git ๋๊ธฐํ
- git fetch -p : ๊นํ๋ธ ๋ธ๋์น ๋ชฉ๋ก ๋๊ธฐํ
- ๋ก์ปฌ์์ ๋ณํฉ๋ ๋ธ๋์น ์ญ์
git checkout main # main ๋ธ๋์น๋ก ์ด๋
git pull origin main # main ๋ธ๋์น ์ต์ ์ํ๋ก ์
๋ฐ์ดํธ
git branch -d ๋ธ๋์น๋ช
# ๋ณํฉ๋ ๋ธ๋์น ๋ก์ปฌ์์ ์ญ์
git fetch ๋ ์์๋ณด๊ธฐ
git์์ ์๊ฒฉ ์ ์ฅ์์ ์ต์ ์ํ๋ฅผ ๋ก์ปฌ๋ก ๊ฐ์ ธ์จ๋ค.
์๊ฒฉ ์ ์ฅ์์ ์ต์ ์ปค๋ฐ, ์ฐธ์กฐ(๋ธ๋์น, ํ๊ทธ ๋ฑ)์ ๋ก์ปฌ๋ก ๊ฐ์ ธ์ค๊ฒ ๋๋ค.
๋จ, ๋ก์ปฌ์ ํ์ฌ ์์
์ค์ธ ๋ธ๋์น์ ์ง์ ์ ์ผ๋ก ๋ณํฉํ๊ฑฐ๋ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- -p ๋๋ --prune: ์๊ฒฉ์์ ์ญ์ ๋ ๋ธ๋์น๋ฅผ ๋ก์ปฌ์์๋ ์ ๊ฑฐ.
- --all: ๋ชจ๋ ์๊ฒฉ ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ด.
- --dry-run: ์ค์ ๋ก ๊ฐ์ ธ์ค์ง ์๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฏธ๋ฆฌ ๋ณด์ฌ์ค.
- -q ๋๋ --quiet: ์ถ๋ ฅ ๋ฉ์์ง๋ฅผ ์ต์ํ.
- --no-tags: ํ๊ทธ๋ฅผ ๊ฐ์ ธ์ค์ง ์์.
- -t ๋๋ --tags: ๋ชจ๋ ํ๊ทธ๋ง ๊ฐ์ ธ์ด.
- -u ๋๋ --update-head-ok: ํ์ฌ ์ฒดํฌ์์๋ ๋ธ๋์น๋ ์ ๋ฐ์ดํธ ๊ฐ๋ฅ.
์์ฝ
- fast-forward, 3ways ๋ช ์นญ ๋ณต์ต
- ์ถ๊ฐ์ ์ผ๋ก pull_request_template์ ์ค์ตํ๋ฉฐ ์ด๋ค ๋ด์ฉ์ด PR ๋ฉ์์ง์ ๋ค์ด๊ฐ๋ฉด ์ข์์ง ๊ณ ๋ฏผํ์๋ค.
- git fetch ๋ช ๋ น์ด์ ์ต์


๋ธ๋์น ์ด๋ฆ ๊ท์น
- ๊ธฐ๋ฅ ๊ฐ๋ฐ: feature/login, feature/select-product
- ์ถ์ ์ค๋น: release-1.3, release-1.4
- ๊ธด๊ธ ์์ : hotfix-1.2.1
์ปค๋ฐ์ ํด์ผ ๊ทธ๋๋ถํฐ ๋ธ๋์น๋ค.
๋ณํฉ
- ๋ธ๋์น๋ฅผ ์์ฑํ๋ค๋ ๊ฑด, ํ์ ์ ์ํ ๊ฒ
- ๊ทธ๋์ ๋ธ๋์น๋ฅผ ๋ณํฉํ๋ค. : ๊นํ๋ธ์์
๋ณํฉ ๋ฐฉ๋ฒ : fast-forward์ 3ways
fast-forward
A branch์์ B branch๋ฅผ ์์ฑํ ์์ ๋ถํฐ,
- A branch์๋ ์๋ฌด๋ฐ ์ถ๊ฐ ๊ตฌํ์ ํ์ง ์๊ณ
- B branch๋ง ์ถ๊ฐ ๊ตฌํํ ๋ค
- B branch์ A branch๋ฅผ ํฉ์น๋ฉด -> A์ B๊ฐ ๋ถ์ผ๋ฉด ๋๋จ.
Before merge:
main: A---B
\
feature: C---D
After fast-forward merge:
main: A---B---C---D
3ways
์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ ๋ต!
A branch์์ B branch๋ฅผ ์์ฑํ ์์ ๋ถํฐ,
- A branch์์ ์ถ๊ฐ ๊ตฌํ์ ํ๊ณ
- B branch์์๋ ์ถ๊ฐ ๊ตฌํ์ ํ๊ณ
- B branch์ A branch๋ฅผ ํฉ์น๋ฉด -> A branch์ B branch๊ฐ ์๋ก ๋น๊ตํ์ฌ ๋ฐ๋ ๊ฒ์ ์ ๋ฆฌํ์ฌ ํฉ์น๋ ์ ๋ต
Before merge:
A---B---E---F (main)
\
C---D (feature)
After 3-way merge:
A---B---E---F---G (main)
\ /
C-------D
github์ ๋ณํฉ ๊ด๋ จ ๊ธฐ๋ฅ
- main ๋ธ๋์น ๋ณดํธ
- ๋ ํฌ์งํ ๋ฆฌ Settings์ Branches์์ main branch protect ์ ๋ต ์ค์ ๊ฐ๋ฅ
- ์ถ๊ฐ ๋ธ๋์น -> main ๋ธ๋์น ๋ณํฉ : Pull Request
- ์ถฉ๋ ์ผ์ด๋๋์ง ํ์ธํด์ค.
- PR ๋ฉ์์ง ์ ๊ฒฝ ์ธ ๊ฒ! (++ PR Template ์ค์ ๊ฐ๋ฅํจ !)
- merge
- merge commit
- branch ์ญ์
์ฐธ๊ณ (Creating a pull request template for your repository)
https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository
merge๋ github์ ๋ก์ปฌ git ๋๊ธฐํ
- git fetch -p : ๊นํ๋ธ ๋ธ๋์น ๋ชฉ๋ก ๋๊ธฐํ
- ๋ก์ปฌ์์ ๋ณํฉ๋ ๋ธ๋์น ์ญ์
git checkout main # main ๋ธ๋์น๋ก ์ด๋
git pull origin main # main ๋ธ๋์น ์ต์ ์ํ๋ก ์
๋ฐ์ดํธ
git branch -d ๋ธ๋์น๋ช
# ๋ณํฉ๋ ๋ธ๋์น ๋ก์ปฌ์์ ์ญ์
git fetch ๋ ์์๋ณด๊ธฐ
git์์ ์๊ฒฉ ์ ์ฅ์์ ์ต์ ์ํ๋ฅผ ๋ก์ปฌ๋ก ๊ฐ์ ธ์จ๋ค.
์๊ฒฉ ์ ์ฅ์์ ์ต์ ์ปค๋ฐ, ์ฐธ์กฐ(๋ธ๋์น, ํ๊ทธ ๋ฑ)์ ๋ก์ปฌ๋ก ๊ฐ์ ธ์ค๊ฒ ๋๋ค.
๋จ, ๋ก์ปฌ์ ํ์ฌ ์์
์ค์ธ ๋ธ๋์น์ ์ง์ ์ ์ผ๋ก ๋ณํฉํ๊ฑฐ๋ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- -p ๋๋ --prune: ์๊ฒฉ์์ ์ญ์ ๋ ๋ธ๋์น๋ฅผ ๋ก์ปฌ์์๋ ์ ๊ฑฐ.
- --all: ๋ชจ๋ ์๊ฒฉ ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ด.
- --dry-run: ์ค์ ๋ก ๊ฐ์ ธ์ค์ง ์๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฏธ๋ฆฌ ๋ณด์ฌ์ค.
- -q ๋๋ --quiet: ์ถ๋ ฅ ๋ฉ์์ง๋ฅผ ์ต์ํ.
- --no-tags: ํ๊ทธ๋ฅผ ๊ฐ์ ธ์ค์ง ์์.
- -t ๋๋ --tags: ๋ชจ๋ ํ๊ทธ๋ง ๊ฐ์ ธ์ด.
- -u ๋๋ --update-head-ok: ํ์ฌ ์ฒดํฌ์์๋ ๋ธ๋์น๋ ์ ๋ฐ์ดํธ ๊ฐ๋ฅ.
์์ฝ
- fast-forward, 3ways ๋ช ์นญ ๋ณต์ต
- ์ถ๊ฐ์ ์ผ๋ก pull_request_template์ ์ค์ตํ๋ฉฐ ์ด๋ค ๋ด์ฉ์ด PR ๋ฉ์์ง์ ๋ค์ด๊ฐ๋ฉด ์ข์์ง ๊ณ ๋ฏผํ์๋ค.
- git fetch ๋ช ๋ น์ด์ ์ต์

