git commit -m "Blog Posting #4๐ซก"
๊ฐ๋ฐ์ํ์ ์ ํ์ ๋๊ตฌ
Conflict ์ถฉ๋ ํด๊ฒฐ: Rebase & Merge: 4๊ฐ์ Merge ์ ๋ต
Git์์ ์๊ฒฉ ๋ธ๋์น์ ๋ก์ปฌ ๋ธ๋์น๋ฅผ ๋ณํฉํ ๋, ์ํฉ์ ๋ฐ๋ผ ์ ์ฉํ ์ ์๋ 4๊ฐ์ง Merge์ ๋ต์ ๋ํด ์ค๋ช ํด๋ณผ ์์ ์ด๋ค.
- Remote ์๊ฒฉ์์ ๊ฐ์ ธ์จ FETCH_HEAD์ ๋ก์ปฌ HEAD๋ฅผ Mergeํ๋๋ฐ์ 3๊ฐ์ง ๋ฐฉ์์ด ์กด์ฌํ๋ค.
- Fast-Forward: Local์ ์ด๋ ํ ๋ด ์์ ๋ ์์ ๋ → Remote์ ํ์ธ์ ์์ ๊ทธ๋๋ก ๊ฐ์ ธ์ ๋ถ์ด๊ธฐ
- 3-Way Merge: Remote์ ์๋ ํ์ธ์ ์์ ๊ทธ๋๋ก, ๋ด ์์ ์ ๊ทธ๋๋ก ๋ณด์กดํ๊ณ → ์ ๋จธ์ง ์ปค๋ฐ ์์ฑ
- Rebase: Remote์ ์๋ ํ์ธ์ ์์ ๊ทธ๋๋ก, ๊ทธ ์์ ๋ด ์์ ์ ์ฒ์๋ถํฐ ๋ค์ ์๊ธฐ = ์ปค๋ฐ ์ฌ์์ฑ
- Squash Merge: Remote์ ์๋ ํ์ธ์ ์์ ์ ๋ชจ๋ ํ๋์ ์ปค๋ฐ์ผ๋ก ๋ญ์ณ ์ ๋จธ์ง ์ปค๋ฐ ์์ฑ
Fast-Forward Merge
๋ก์ปฌ ๋ธ๋์น์์ ์ด๋ ํ ์์ ๋ ์ํ๋์ง ์์์ ๋, ์๊ฒฉ ๋ธ๋์น์ ์ปค๋ฐ๋ค์ ๋ก์ปฌ ๋ธ๋์น๋ก ๊ทธ๋๋ก ๊ฐ์ ธ์จ๋ค. ์ฆ, ๊ธฐ์กด์ ์ปค๋ฐ์ ์ด์ด์ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ๋ณํฉ ์ปค๋ฐ์ด ์์ฑ๋์ง ์๋๋ค.
git fetch
git merge origin/main --ff-only
`--ff-only` ์ต์ ์ Fast-Forward ๋ณํฉ๋ง ํ์ฉํ๋ฉฐ, ์ด ์กฐ๊ฑด์ด ๋ง์ง ์์ ๊ฒฝ์ฐ ๋ณํฉ์ ์ํํ์ง ์๋๋ค.
3-Way Merge
๋ก์ปฌ ๋ธ๋์น์์ ์์ ์์ ์ด ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ, ์๊ฒฉ ๋ธ๋์น์ ๋ก์ปฌ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ ๋ฐ์ํ๋ ์๋ก์ด ๋ณํฉ ์ปค๋ฐ์ ์์ฑํ๋ค. ์ด๋ ๋ก์ปฌ ์์ ์ ์ ์งํ๋ฉฐ ์๊ฒฉ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณํฉํ๊ธฐ์ ์ ์ฉํ๋ค.
git fetch
git merge origin/main --no-ff
`--no-ff` ์ต์ ์ ๊ฐ์ ๋ก ๋ณํฉ ์ปค๋ฐ์ ์์ฑํ์ฌ ๋ก์ปฌ๊ณผ ์๊ฒฉ์ ๋ณ๊ฒฝ์ฌํญ์ ๊ธฐ๋กํ๋ค.
Rebase and Merge
์๊ฒฉ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ๋จผ์ ๋ก์ปฌ ๋ธ๋์น์ ๊ฐ์ ธ์จ ํ ๋ก์ปฌ์์์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ทธ ์์ ๋ค์ ์ ์ฉํ๋ค. ์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ปค๋ฐ ํ์คํ ๋ฆฌ๊ฐ ๊น๋ํ์ง๋ง ๊ธฐ์กด ์ปค๋ฐ์ด ์ฌ์์ฑ ๋ ์ ์๋ค.
git fetch
git rebase origin/main
Squash and Merge
์๊ฒฉ ๋ธ๋์น์ ์ฌ๋ฌ ์ปค๋ฐ์ ํ๋์ ์ปค๋ฐ์ผ๋ก ์์ถ(squash)ํ์ฌ ๋ณํฉํ๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ์์ ์ปค๋ฐ์ ํ๋๋ก ํฉ์ณ์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋จ์ํํ๋๋ฐ ์ ์ฉํ๋ค.
git fetch
git merge --squash origin/main
- ์๋ ์ปค๋ฐ์ ๋ชจ๋ ์์ ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์๊ฒฉ ๋ธ๋์น์ ๋ํด์๋ ์ฌ์ฉํ ์ ์๊ณ , ๋ก์ปฌ ๋ธ๋์น ๋จธ์ง์๋ง ๊ฐ๋ฅํ๋ค.
Merge ๊ณผ์ ์์ ์ถฉ๋์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ `git merge --abort` ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ณํฉ์ ์ค๋จํ๊ณ ์ด์ ์ํ๋ก ๋์๊ฐ ์ ์๋ค.
์ด๋ค Merge ๋ฐฉ์์ ์ฑํํ๋ ๊ฒ์ด ์ข์๊น?
- ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก๋ 3-Way Merge (Non Fast-Forward)๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ , ์ฃผ๋์ด ๊ฐ๋ฐ์์๊ฒ๋ ๊ฐํธํ๋ค.
- ํ์ง๋ง ๋จ์ ์ผ๋ก ๋ถ์ฐ๋ฌผ์ธ ๋จธ์ง์ปค๋ฐ์ด ์๊ธด๋ค๋ ์ ์ด๋ค.
- ๋จธ์ง ์ปค๋ฐ์ด๋ผ๋ ๋ถ์ฐ๋ฌผ์ ์ซ์ดํ๋ ์๋์ด ๊ฐ๋ฐ์๋ค์ Rebase๋ฅผ ํตํด ๊น๋ํ๊ฒ ์ปค๋ฐ์ ๊ด๋ฆฌํ๋ค.
โน๏ธ์ฐธ๊ณ
[ASAC 6๊ธฐ ๊ฐ์์๋ฃ]
'๐ปDEV-STUDY > Git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Git & GitHub #6 - ์ค๋ฌด์์์ Git ๋ธ๋์น ์ ๋ต ๋ฐ Zone ๊ตฌ๋ณ (0) | 2024.09.01 |
---|---|
Git & GitHub #5 - Git ๊ตฌ์กฐ ๋ฐ ๋ช ๋ น์ด & Git ํธ๋ฌ๋ธ ์ํ (2) | 2024.09.01 |
Git & GitHub #3 - Local Branch์์ Remote Branch ๋๊ธฐํ (4) | 2024.09.01 |
Git & GitHub #2 - Git ์์๊ณผ Local/Remote Branch ๊ด๋ฆฌ (1) | 2024.09.01 |
Git & GitHub #1 - ๊ฐ๋ ๋ฐ SSH ํค ์์ฑ (0) | 2024.08.31 |