์ด๊ธฐ ์ํฉ ์ค์
# main ๋ธ๋์น์์ ์์
main: A โ B โ C
# feature ๋ธ๋์น ์์ฑ
git checkout -b feature
feature: A โ B โ C โ D โ E
# hotfix ๋ธ๋์น ์์ฑ (main์์)
git checkout main
git checkout -b hotfix
hotfix: A โ B โ C โ F โ G
ํ์ฌ ์ํ:
main: A โ B โ C
feature: โโ D โ E
hotfix: โโ F โ G
1. Fast-Forward Merge
์กฐ๊ฑด
- ๋์ ๋ธ๋์น์ ์๋ก์ด ์ปค๋ฐ์ด ์์ ๋
- ํ์ฌ ๋ธ๋์น๊ฐ ๋์ ๋ธ๋์น์ ์ง์ ์ ์ธ ํ์์ผ ๋
์์
# main์ผ๋ก ์ด๋ํด์ feature๋ฅผ merge
git checkout main
git merge feature
๊ฒฐ๊ณผ
main/feature: A โ B โ C โ D โ E
hotfix: โโ F โ G
ํน์ง
- โ ์ฅ์ : ํฌ์ธํฐ๋ง ์์ผ๋ก ์ด๋, ๊น๋ํ ํ์คํ ๋ฆฌ, merge ์ปค๋ฐ ์์
- โ ๋จ์ : ๋ธ๋์น ์กด์ฌ ํ์ ์ด ์ฌ๋ผ์ง
2. 3-way Merge (Non-fast-forward)
์กฐ๊ฑด
- ๋ ๋ธ๋์น ๋ชจ๋ ์๋ก์ด ์ปค๋ฐ์ด ์์ ๋
- ๋ธ๋์น๋ค์ด diverged ์ํ์ผ ๋
์์
# main์ hotfix๋ฅผ merge (main์๋ ์ด๋ฏธ feature๊ฐ merge๋จ)
git checkout main
git merge hotfix
๊ฒฐ๊ณผ
main: A โ B โ C โ D โ E โ M
โโ F โ G โโ
ํน์ง
- โ ์ฅ์ : ์๋ก์ด merge ์ปค๋ฐ(M) ์์ฑ, ๋ธ๋์น ํ์คํ ๋ฆฌ ๋ณด์กด, ์์ ํ ๋ณํฉ
- โ ๋จ์ : ๋ณต์กํ ํ์คํ ๋ฆฌ, merge ์ปค๋ฐ ์ฆ๊ฐ
3. Rebase
๋ชฉ์
- Linearํ ํ์คํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๋
- ์ปค๋ฐ์ ๊น๋ํ๊ฒ ์ ๋ฆฌํ๊ณ ์ถ์ ๋
์๋๋ฆฌ์ค: auth ๋ธ๋์น๋ฅผ main ์์ ์ฌ๋ฐฐ์น
# ์ด๊ธฐ ์ํ
main: A โ B โ C โ H โ I
auth: โโ D โ E โ F
# auth ๋ธ๋์น์์ rebase ์คํ
git checkout auth
git rebase main
๊ฒฐ๊ณผ
main: A โ B โ C โ H โ I
auth: โโ D' โ E' โ F'
ํน์ง
- โ ์ฅ์ : ์ปค๋ฐ๋ค์ด ์๋ก์ด base ์์ ์ฌ์ ์ฉ, ์ ํ์ ์ด๊ณ ๊น๋ํ ํ์คํ ๋ฆฌ
- โ ๋จ์ : ์ปค๋ฐ ํด์ ๋ณ๊ฒฝ, ์ถฉ๋ ๊ฐ๋ฅ์ฑ, ๊ณต์ ๋ ๋ธ๋์น์์๋ ์ํ
์ค์ ํ๋ก์ ํธ ์์
ํ์ฌ ๋ธ๋์น ์ํฉ
main: ... โ M1 โ M2
Feat/last-time: โโ L1 โ L2 โ L3
Feat/auth: โโ A1 โ A2
1. Fast-forward (Feat/last-time โ main)
git checkout main
git merge Feat/last-time # Fast-forward ๋ฐ์
๊ฒฐ๊ณผ: main: ... โ M1 โ M2 โ L1 โ L2 โ L3
2. Fast-forward (main โ Feat/auth)
git checkout Feat/auth
git merge main # Fast-forward ๋ฐ์
๊ฒฐ๊ณผ: Feat/auth: ... โ M1 โ M2 โ L1 โ L2 โ L3 โ A1 โ A2
์ธ์ ์ด๋ค ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ๊น?
Fast-Forward
# ๊ฐ์ธ feature ๋ธ๋์น, ์ ํ ํ์คํ ๋ฆฌ ์ํ ๋
git merge feature-branch
์ฌ์ฉ ์๊ธฐ:
- ๊ฐ์ธ ์์ ๋ธ๋์น
- ๋น ๋ฅธ hotfix
- ์ ํ ํ์คํ ๋ฆฌ๋ฅผ ์ ์งํ๊ณ ์ถ์ ๋
3-way Merge
# ๋ธ๋์น ํ์คํ ๋ฆฌ ๋ณด์กดํ๊ณ ์ถ์ ๋
git merge --no-ff feature-branch
์ฌ์ฉ ์๊ธฐ:
- ํ ์์ ์์ ๋ธ๋์น ํ์คํ ๋ฆฌ ๋ณด์กด
- Feature ์์ฑ ์์ ์ ๋ช ํํ ํ๊ณ ์ถ์ ๋
- ๋กค๋ฐฑ์ด ์ฌ์์ผ ํ๋ ๊ฒฝ์ฐ
Rebase
# ๊น๋ํ ํ์คํ ๋ฆฌ, ์ปค๋ฐ ์ ๋ฆฌํ๊ณ ์ถ์ ๋
git rebase main
git rebase -i HEAD~3 # ๋ํํ rebase๋ก ์ปค๋ฐ ์ ๋ฆฌ
์ฌ์ฉ ์๊ธฐ:
- ๊ฐ์ธ ๋ธ๋์น ์ ๋ฆฌ
- ์ปค๋ฐ ๋ฉ์์ง ์์
- ๋ถํ์ํ ์ปค๋ฐ ์ ๊ฑฐ
- PR ์ ํ์คํ ๋ฆฌ ์ ๋ฆฌ
์ถฉ๋ ํด๊ฒฐ ์ฐจ์ด
Merge ์ถฉ๋
git merge feature
# ์ถฉ๋ ํด๊ฒฐ ํ
git add .
git commit # merge ์ปค๋ฐ ์์ฑ
Rebase ์ถฉ๋
git rebase main
# ์ถฉ๋ ํด๊ฒฐ ํ
git add .
git rebase --continue # ๋ค์ ์ปค๋ฐ์ผ๋ก ๊ณ์
# ๋๋ ์ค๋จ: git rebase --abort
ํ ์์ ๊ถ์ฅ์ฌํญ
1. Feature ๋ธ๋์น ์ํฌํ๋ก์ฐ
์ด์
Feature ๋ธ๋์น ์ํฌํ๋ก์ฐ ๊ถ์ฅ์ฌํญ
์ํฌํ๋ก์ฐ ๋จ๊ณ
# 1. Feature ๋ธ๋์น์์ ์์ git checkout -b feature/new-function # 2. ์์ ์๋ฃ ํ main ๋ธ๋์น ์ต์ ํ git checkout main git pull origin main # 3. Feature ๋ธ๋์น์ main ๋ด์ฉ rebase git checkout feature/new-function git rebase main # 4. Main์ Fast-forward merge git checkout main git merge feature/new-function
์ ์ด ๋ฐฉ์์ด ๊ถ์ฅ๋๋๊ฐ?
1. ์์ ํ ๊ฐ๋ฐ ํ๊ฒฝ
- ๐ก๏ธ main ๋ธ๋์น ๋ณดํธ: ์คํ์ ์ฝ๋๊ฐ main์ ์ํฅ ์ฃผ์ง ์์
- ๐ฅ ๋ณ๋ ฌ ์์ : ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ๋ค๋ฅธ ๊ธฐ๋ฅ ๊ฐ๋ฐ ๊ฐ๋ฅ
- ๐งช ์คํ ๊ฐ๋ฅ: ์คํจํด๋ main์ ์ํฅ ์์
2. ์ต์ ์ฝ๋์์ ํธํ์ฑ
- ๐ฑ ์ต์ ๋ฐ์: ๋ค๋ฅธ ํ์์ ๋ณ๊ฒฝ์ฌํญ ์ฆ์ ๋ฐ์
- ๐ซ ์ถฉ๋ ์ต์ํ: ์ค๋๋ base์์ ์์ ํ์ง ์์
- ๐ ์ง์์ ํตํฉ: ๋งค๋ฒ ์ต์ ์ํ์์ ๊ฐ๋ฐ
3. ๊น๋ํ ํ์คํ ๋ฆฌ
# โ ๊ถ์ฅ ๋ฐฉ์: ์ ํ ํ์คํ ๋ฆฌ main: A โ B โ C โ D โ E โ F โ G โfeat1 โfeat2 # โ ๋น๊ถ์ฅ: ๋ณต์กํ ํ์คํ ๋ฆฌ main: A โ B โ C โ F โ G โ M1 โ H โ M2 โโ D โ E โโ โโ I โโ
4. ์์ ํ ์ถฉ๋ ํด๊ฒฐ
- โ ๊ฒฉ๋ฆฌ๋ ์์ : feature ๋ธ๋์น์์๋ง ์ถฉ๋ ํด๊ฒฐ
- ๐ซ main ๋ณดํธ: main ๋ธ๋์น๋ ํญ์ ์์ ์
- ๐ฏ ํ์ : merge ์์ ์ ์ถฉ๋ ์์ ๋ณด์ฅ
์ ์ถฉ๋ ํด๊ฒฐ์ด ์์ ํ๊ฐ?
์ถฉ๋์ #3. rebase์์๋ง ๋ฐ์ํ๋ค. ์ด๋ฅผ ๋ชจ๋ ํด๊ฒฐํ๊ณ ๋ ๋ค main์ fast forward merge๋ฅผ ํ๋ฉด ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด 0%
git checkout feature/new-function git rebase main # โ ์ฌ๊ธฐ์ conflict ๋ฐ์! # 1. Conflict ํ์ผ ์์ # VS Code๋ ์๋ํฐ์์ <<<< ==== >>>> ๋ง์ปค ํด๊ฒฐ # 2. ์์ ๋ ํ์ผ ์คํ ์ด์ง git add . # 3. Rebase ๊ณ์ ์งํ git rebase --continue # 4. ์ถ๊ฐ conflict๊ฐ ์๋ค๋ฉด 1-3 ๋ฐ๋ณต
์ฅ์ ์์ฝ
์๋ณธ ๋งํฌ
- ๊ฐ๋ฐ ์์ ์ฑ: main ๋ธ๋์น๊ฐ ํญ์ ์์ ์
- ํ ํ์ : ๋ณ๋ ฌ ๊ฐ๋ฐ๊ณผ ์ฝ๋ ํตํฉ ์ฉ์ด
- ํ์คํ ๋ฆฌ ๊ด๋ฆฌ: ๊น๋ํ๊ณ ์ถ์ ๊ฐ๋ฅํ ์ปค๋ฐ ํ์คํ ๋ฆฌ
- ์ถฉ๋ ์ต์ํ: ์ฒด๊ณ์ ์ธ ์ถฉ๋ ํด๊ฒฐ ๊ณผ์
2. Release ๋ธ๋์น
์ด์
Release ๋ธ๋์น ์ ๋ต
Release ๋ธ๋์น ์ ๋ต
๊ถ์ฅ ๋ช ๋ น์ด
# Release ๋ธ๋์น๋ 3-way merge๋ก ํ์คํ ๋ฆฌ ๋ณด์กด git checkout main git merge --no-ff release/v1.2.0
์ 3-way Merge๋ฅผ ์ฌ์ฉํ๋๊ฐ?
1. ๋ฆด๋ฆฌ์ฆ ํ์คํ ๋ฆฌ ๋ณด์กด
# โ 3-way merge: ๋ฆด๋ฆฌ์ฆ ์ง์ ๋ช ํ main: A โ B โ C โ F โ G โ M โโ D โ E โโ v1.2.0 # โ Fast-forward: ๋ฆด๋ฆฌ์ฆ ํ์ ์์ main: A โ B โ C โ D โ E โ F โ v1.2.0?
2. ์ฌ์ด ๋กค๋ฐฑ
- ๐ ๋น ๋ฅธ ๋ณต๊ตฌ:
git reset --hard HEAD~1
๋ก ๋ฆด๋ฆฌ์ฆ ์ ์ํ๋ก ์ฆ์ ๋ณต๊ตฌ- ๐ ๋ช ํํ ์ง์ : ์ด๋๊น์ง๊ฐ ๋ฆด๋ฆฌ์ฆ์ธ์ง ํ๋์ ํ์
- ๐ก๏ธ ์์ ์ฑ: ๋ฌธ์ ๋ฐ์ ์ ์ ์ํ ๋์ ๊ฐ๋ฅ
3. ๋ฆด๋ฆฌ์ฆ ์ถ์ ์ฑ
- ๐ ์์ ๊ธฐ๋ก: ์ ํํ ๋ฆด๋ฆฌ์ฆ ์๊ฐ๊ณผ ๋ด์ฉ ์ถ์
- ๐ท๏ธ ๋ฒ์ ์ฐ๊ฒฐ: ํ๊ทธ์ merge commit์ ๋ช ํํ ์ฐ๊ฒฐ
- ๐ ๋ณ๊ฒฝ ๋ด์ญ: ํด๋น ๋ฆด๋ฆฌ์ฆ์ ํฌํจ๋ ๊ธฐ๋ฅ๋ค ๋ช ํํ ๊ตฌ๋ถ
Release ์ํฌํ๋ก์ฐ
1. Release ๋ธ๋์น ์์ฑ
git checkout -b release/v1.2.0 main
2. ๋ฆด๋ฆฌ์ฆ ์ค๋น ์์
# ๋ฒ์ ์ ๋ฐ์ดํธ echo "v1.2.0" > VERSION git commit -m "Bump version to v1.2.0" # ๋ฆด๋ฆฌ์ฆ ๋ ธํธ ์์ฑ git commit -m "Update CHANGELOG for v1.2.0"
3. ํ ์คํธ ๋ฐ ๋ฒ๊ทธ ์์
# ๋ฆด๋ฆฌ์ฆ ๊ด๋ จ ๋ฒ๊ทธ๋ง ์์ git commit -m "Fix: Critical payment validation bug"
4. Main์ Merge
git checkout main git merge --no-ff release/v1.2.0 git tag -a v1.2.0 -m "Release version 1.2.0"
โno-ff ํ๋๊ทธ์ ์ค์์ฑ
Fast-forward์ ๋ฌธ์ ์
- ๋ฆด๋ฆฌ์ฆ ์์ ์ด ์ผ๋ฐ ๊ฐ๋ฐ๊ณผ ๊ตฌ๋ถ๋์ง ์์
- ๋กค๋ฐฑ ์ ๊ฐ๋ณ ์ปค๋ฐ์ ํ๋์ฉ ๋๋๋ ค์ผ ํจ
- ๋ฆด๋ฆฌ์ฆ์ ํฌํจ๋ ๋ณ๊ฒฝ์ฌํญ์ ํ๋์ ํ์ ํ๊ธฐ ์ด๋ ค์
โno-ff์ ์ฅ์
- ๐ฏ ๋ช ํํ ๊ตฌ๋ถ: ๋ฆด๋ฆฌ์ฆ ์์ ๊ณผ ์ผ๋ฐ ๊ฐ๋ฐ ๊ตฌ๋ถ
- ๐ ํต๊ณ ๊ฐ๋ฅ: ๋ฆด๋ฆฌ์ฆ๋ณ ์์ ๋ ์ธก์ ์ฉ์ด
- ๐ ๊ฒํ ์ฉ์ด: ๋ฆด๋ฆฌ์ฆ ๋ฒ์๋ฅผ ํ๋์ ํ์
Feature vs Release ๋น๊ต
๊ตฌ๋ถ Feature ๋ธ๋์น Release ๋ธ๋์น ๋ชฉ์ ์ ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ฆด๋ฆฌ์ฆ ์ค๋น Merge ๋ฐฉ์ Fast-forward 3-way merge (โno-ff) ํ์คํ ๋ฆฌ ์ ํ ์ ์ง ํ์คํ ๋ฆฌ ๋ณด์กด ๋กค๋ฐฑ ๊ฐ๋ณ ์ปค๋ฐ ์ ์ฒด ๋ฆด๋ฆฌ์ฆ ๋จ์ ์ถ์ ์ฑ ๊ธฐ๋ฅ๋ณ ๋ฒ์ ๋ณ ์ฅ์ ์์ฝ
์๋ณธ ๋งํฌ
- ๋ช ํํ ๋ฆด๋ฆฌ์ฆ ํฌ์ธํธ: ์ธ์ ๋ฌด์์ด ๋ฆด๋ฆฌ์ฆ๋์๋์ง ๋ช ํ
- ์ฌ์ด ๋กค๋ฐฑ: ๋ฌธ์ ๋ฐ์ ์ ๋น ๋ฅธ ๋ณต๊ตฌ ๊ฐ๋ฅ
- ๋ฒ์ ๊ด๋ฆฌ: ์ฒด๊ณ์ ์ธ ๋ฒ์ ํ์คํ ๋ฆฌ ์ ์ง
- ํ ์ปค๋ฎค๋์ผ์ด์ : ๋ฆด๋ฆฌ์ฆ ๋ฒ์์ ๋ด์ฉ์ ์ฝ๊ฒ ๊ณต์
3. Hotfix ๋ธ๋์น
์ด์
Hotfix ๋ธ๋์น ์ ๋ต
Hotfix ๋ธ๋์น ์ ๋ต
๊ถ์ฅ ๋ช ๋ น์ด
# Hotfix๋ Fast-forward merge๋ก ๋น ๋ฅธ ์ ์ฉ git checkout main git merge hotfix/critical-bug
์ Fast-forward Merge๋ฅผ ์ฌ์ฉํ๋๊ฐ?
1. ์ ์ํ ๋ฐฐํฌ
# โ Fast-forward: ์ฆ์ ์ ์ฉ main: A โ B โ C โ D โ E โ F โ hotfix ์ฆ์ ์ ์ฉ # โ 3-way merge: ๋ถํ์ํ ์๊ฐ ์์ main: A โ B โ C โ F โ G โ M โโ D โ E โโ (์๊ฐ ๋ญ๋น)
2. ๋จ์์ฑ ์ฐ์
- ๐จ ๊ธด๊ธ ์ํฉ: ๋ณต์กํ ๊ณผ์ ๋ณด๋ค ๋น ๋ฅธ ํด๊ฒฐ์ด ์ฐ์
- ๐ฏ ๋ช ํํ ๋ชฉ์ : ํ ๊ฐ์ง ๋ฌธ์ ๋ง ํด๊ฒฐ (๋ณดํต 1-2๊ฐ ์ปค๋ฐ)
- โก ์ฆ์ ๋ฐ์: merge commit ์์ฑ ์๊ฐ๋ ์ ์ฝ
3. ์ค์ ๋ฐฉ์ง
- ๐ซ ๋ณต์ก์ฑ ์ ๊ฑฐ: ๊ธด๊ธ ์ํฉ์์ ๋จ์ํ ๊ณผ์ ์ผ๋ก ์ค์ ์ต์ํ
- ๐ง ์ง์ค: ๋ฌธ์ ํด๊ฒฐ์๋ง ์ง์ค, ํ์คํ ๋ฆฌ ๊ด๋ฆฌ๋ ๋์ค์
- โ ํ์ค์ฑ: ๋น ๋ฅด๊ณ ํ์คํ ์ ์ฉ
Hotfix ์ํฌํ๋ก์ฐ
1. ๊ธด๊ธ ์ํฉ ๋ฐ์
๐จ ALERT: Critical production bug detected!
2. Hotfix ๋ธ๋์น ์์ฑ
git checkout main # ํ์ฌ ํ๋ก๋์ ๋ฒ์ git checkout -b hotfix/payment-crash
3. ๋น ๋ฅธ ์์
git commit -m "Fix: Null pointer exception in payment validation"
4. ์ฆ์ ๋ฐฐํฌ
git checkout main git merge hotfix/payment-crash # Fast-forward git tag v1.2.1 # ๊ฐ๋จํ ํ๊ทธ (๋ฐฐํฌ ํธ๋ฆฌ๊ฑฐ) git push origin main v1.2.1
5. ๋ค๋ฅธ ๋ธ๋์น์๋ ๋ฐ์
# ๊ฐ๋ฐ ๋ธ๋์น์๋ ์ ์ฉ (์ค๋ณต ๋ฒ๊ทธ ๋ฐฉ์ง) git checkout develop git merge hotfix/payment-crash
์๊ฐ ๋น๊ต ์์
Fast-forward ๋ฐฉ์ (๊ถ์ฅ)
13:00 - ๋ฒ๊ทธ ๋ฐ๊ฒฌ 13:05 - hotfix ๋ธ๋์น ์์ฑ 13:15 - ์์ ์๋ฃ 13:16 - merge, ํ๊ทธ, ํธ์ 13:20 - ์๋น์ค ์ ์ํ
3-way merge ๋ฐฉ์ (๋น๊ถ์ฅ)
13:00 - ๋ฒ๊ทธ ๋ฐ๊ฒฌ 13:05 - hotfix ๋ธ๋์น ์์ฑ 13:15 - ์์ ์๋ฃ 13:18 - merge commit ์์ฑ 13:22 - merge ์๋ฃ ๋ฐ ๋ฐฐํฌ 13:27 - ์๋น์ค ์ ์ํ
๊ฒฐ๊ณผ: 7๋ถ์ ๋ค์ดํ์ ๋จ์ถ!
๋ธ๋์น๋ณ ์ ๋ต ๋น๊ต
๊ตฌ๋ถ Feature Release Hotfix ๊ธด๊ธ๋ ๋ฎ์ ์ค๊ฐ ๐จ ๋์ Merge ๋ฐฉ์ Fast-forward 3-way merge Fast-forward ์ด์ ๊น๋ํ ํ์คํ ๋ฆฌ ํ์คํ ๋ฆฌ ๋ณด์กด ๋น ๋ฅธ ๋ฐฐํฌ ์ฐ์ ์์ ํ์ง ๊ณํ์ฑ ์๋ ์ธ์ Hotfix๋ฅผ ์ฌ์ฉํ๋๊ฐ?
โ Hotfix ์ฌ์ฉ ์ํฉ
- ๐จ ํ๋ก๋์ ์ฅ์ : ์๋น์ค ์ค๋จ ์ํฉ
- ๐ ๋ณด์ ์ทจ์ฝ์ : ์ฆ์ ํจ์น ํ์
- ๐ฐ ๋น์ฆ๋์ค ํฌ๋ฆฌํฐ์ปฌ: ๋งค์ถ์ ์ง์ ์ํฅ
- ๐ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ: ๋ฐ์ดํฐ ์์ค ์ํ
โ Hotfix ๋จ์ฉ ์ฃผ์
- ๐ ์ผ๋ฐ์ ์ธ ๋ฒ๊ทธ โ ๋ค์ ๋ฆด๋ฆฌ์ฆ ํฌํจ
- ๐จ UI ๊ฐ์ โ ๊ณํ๋ ๊ฐ๋ฐ ์งํ
- โก ์ฑ๋ฅ ์ต์ ํ โ Feature ๋ธ๋์น ์ฌ์ฉ
- ๐ฑ ์๋ก์ด ๊ธฐ๋ฅ โ Feature ๋ธ๋์น ์ฌ์ฉ
์ฃผ์์ฌํญ
ํ์ ์ฒดํฌ๋ฆฌ์คํธ
- โ ํ ์คํธ: ๋น ๋ฅด๋๋ผ๋ ํต์ฌ ํ ์คํธ๋ ํ์
- โ ๋ฌธ์ํ: ๊ธด๊ธ ์์ ๋ด์ฉ ๊ธฐ๋ก
- โ ์ ํ: ๋ชจ๋ ๊ด๋ จ ๋ธ๋์น์ ๋ฐ์
- โ ๋ชจ๋ํฐ๋ง: ๋ฐฐํฌ ํ ์ฆ์ ํ์ธ
์ฅ์ ์์ฝ
์๋ณธ ๋งํฌ
- ์ต๋ ์๋: ๊ธด๊ธ ์ํฉ์์ ๊ฐ์ฅ ๋น ๋ฅธ ๋์
- ๋จ์์ฑ: ๋ณต์กํ ๊ณผ์ ์์ด ์ฆ์ ์ ์ฉ
- ์ค์ ๋ฐฉ์ง: ๊ฐ๋จํ ์ํฌํ๋ก์ฐ๋ก ์ค์ ์ต์ํ
- ์ง์ค: ๋ฌธ์ ํด๊ฒฐ์๋ง ์ง์ค ๊ฐ๋ฅ
์ฃผ์์ฌํญ
โ ๏ธ Rebase ์ฌ์ฉ ์ ์ฃผ์์
- ์ ๋๋ก ๊ณต์ ๋ ๋ธ๋์น๋ฅผ rebaseํ์ง ๋ง์ธ์
- ์ด๋ฏธ push๋ ์ปค๋ฐ์ rebaseํ๋ฉด ๋ค๋ฅธ ํ์์๊ฒ ๋ฌธ์ ๋ฐ์
git push --force
๋ ๋งค์ฐ ์ํํจ
๐ ํ์คํ ๋ฆฌ ํ์ธ ๋ช ๋ น์ด
# ๊ทธ๋ํ๋ก ํ์คํ ๋ฆฌ ๋ณด๊ธฐ
git log --oneline --graph --all
# ํน์ ๋ธ๋์น ๊ฐ ์ฐจ์ด ๋ณด๊ธฐ
git log main..feature
# ๋จธ์ง ์ปค๋ฐ๋ง ๋ณด๊ธฐ
git log --merges
์ ๋ฆฌ
๋ฐฉ๋ฒ | ์ฌ์ฉ ์๊ธฐ | ์ฅ์ | ๋จ์ |
---|---|---|---|
Fast-forward | ๊ฐ์ธ ์์ , ๊ฐ๋จํ ๋ณ๊ฒฝ | ๊น๋ํ ํ์คํ ๋ฆฌ | ๋ธ๋์น ํ์ ์์ |
3-way Merge | ํ ์์ , ์ค์ํ ๊ธฐ๋ฅ | ํ์คํ ๋ฆฌ ๋ณด์กด, ์์ | ๋ณต์กํ ๊ทธ๋ํ |
Rebase | ์ปค๋ฐ ์ ๋ฆฌ, ์ ํ ํ์คํ ๋ฆฌ | ๊น๋ํ ๋ผ์ธ | ์ํ์ฑ, ์ถฉ๋ ๊ฐ๋ฅ |
์ํฉ์ ๋ง๊ฒ ์ ํํ์ฌ ๊น๋ํ๊ณ ์ถ์ ๊ฐ๋ฅํ Git ํ์คํ ๋ฆฌ๋ฅผ ์ ์งํ์ธ์!