์ค๋ต๊น ๐ช - ์ค๊ธํธ #7: Git Merge Conflict๋? ์์ธ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ
by its_TIMI๐ Git Merge Conflict๋?
Git์ ์ฌ์ฉํ์ฌ ํ์ ์ ์งํํ๋ค ๋ณด๋ฉด, Merge Conflict(๋ณํฉ ์ถฉ๋)์ด ๋ฐ์ํ ์ ์๋ค.
์ด๋ Git์ด ์๋์ผ๋ก ๋ณํฉํ ์ ์๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ฉฐ,
๊ฐ๋ฐ์๊ฐ ์ง์ ์ฝ๋ ์ถฉ๋์ ํด๊ฒฐํด์ผ ํ๋ค.
Merge Conflict๋ ์ธ์ ๋ฐ์ํ ๊น? ๐ค
• ๊ฐ์ ํ์ผ์ ๊ฐ์ ์ค์ ๋ ๋ช ์ด์์ ๊ฐ๋ฐ์๊ฐ ์์ ํ์ ๋
• ํ ๋ธ๋์น์์ ์ญ์ ๋ ํ์ผ์ด, ๋ค๋ฅธ ๋ธ๋์น์์ ์์ ๋ ๊ฒฝ์ฐ
• Rebase ๋์ค ๋์ผํ ํ์ผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ถฉ๋ํ ๊ฒฝ์ฐ
Git์ ์๋ ๋ณํฉ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๊ฐ๋ฐ์์๊ฒ ์ถฉ๋์ ํด๊ฒฐํ๋ผ๊ณ ์๋ฆฐ๋ค.
์ด์ Merge Conflict ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์ดํด๋ณด์.
๐ Merge Conflict ํด๊ฒฐ ๋ฐฉ๋ฒ
1๏ธโฃ ์ถฉ๋์ด ๋ฐ์ํ ํ์ผ ํ์ธ
git status
โ ์ถฉ๋์ด ๋ฐ์ํ ํ์ผ ๋ชฉ๋ก์ด ์ถ๋ ฅ๋จ
โ ํด๋น ํ์ผ์ ์ด์ด๋ณด๋ฉด Git์ด ์๋์ผ๋ก **Conflict Markers(์ถฉ๋ ํ์)**๋ฅผ ์ถ๊ฐํด์ค๋ค.
2๏ธโฃ ์ถฉ๋ ํด๊ฒฐ (์๋ ํด๊ฒฐ)
์ถฉ๋์ด ๋ฐ์ํ ํ์ผ์ ์ด์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ํ์๋๋ค.
<<<<<<< HEAD
console.log("๋๋ main ๋ธ๋์น ์ฝ๋!");
=======
console.log("๋๋ feature ๋ธ๋์น ์ฝ๋!");
>>>>>>> feature-branch
• HEAD ์๋: ํ์ฌ ๋ธ๋์น์ ์ฝ๋
• ======= ์๋: ๋ณํฉํ๋ ค๋ ๋ธ๋์น์ ์ฝ๋
โ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ํ๋ ์ฝ๋๋ฅผ ์ ํํ๊ณ ์ถฉ๋์ ํด๊ฒฐํ ํ ์ ์ฅํ๋ฉด ๋๋ค.
3๏ธโฃ ์ถฉ๋ ํด๊ฒฐ ํ Git์ ๋ฐ์
git add <ํ์ผ๋ช
>
git commit -m "Fix: Merge Conflict ํด๊ฒฐ"
โ ๋ณ๊ฒฝ ์ฌํญ์ Git์ ๋ฐ์ํ๊ณ Merge Conflict ํด๊ฒฐ ์๋ฃ
๐ฅ ์๋ ํด๊ฒฐ ๋ช ๋ น์ด ํ์ฉ
Git์์๋ ํน์ ๋ธ๋์น์ ์ฝ๋๋ง ์ ์งํ ์๋ ์๋ค.
โ ๋ด ์ฝ๋ ์ ์ง (--ours)
git checkout --ours <ํ์ผ๋ช
>
โ ์๋ ์ฝ๋ ๋ฐ์ (--theirs)
git checkout --theirs <ํ์ผ๋ช
>
์ดํ
git add .
git commit -m "Fix: Merge Conflict ํด๊ฒฐ"
ํ๋ฉด ์ถฉ๋ ํด๊ฒฐ์ด ์๋ฃ๋๋ค.
๐ ๋ง๋ฌด๋ฆฌํ๋ฉฐ…
Merge Conflict๋ Git ํ์ ์์ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ์ง๋ง, ํด๊ฒฐ๋ฒ์ ์ตํ๋๋ฉด ๋๋ ต์ง ์๋ค.
ํนํ git checkout --ours / --theirs ๊ฐ์ ์๋ ํด๊ฒฐ ๋ช ๋ น์ด๋ฅผ ์ ํ์ฉํ๋ฉด ์๊ฐ์ ๋จ์ถํ ์ ์๋ค.
๐ Fork ๊ธฐ๋ฐ ํ์ ์์ Merge Conflict๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํ๋ค๋ฉด?
โก๏ธ ํ์ ํธ #3: Fork๋ ๋ ํฌ๋ฅผ ๋ฉ์ธ ๋ ํฌ์ ๋๊ธฐํํ๋ฉฐ Merge Conflict ํด๊ฒฐํ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์!
'์ค๋ต ๊น๐ช > ์ค๊ธํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ธ๋ก๊ทธ์ ์ ๋ณด
Dev_TIMI
its_TIMI