Dev_TIMI

์Šค๋‚ต๊นƒ ๐Ÿช - ์ค‘๊ธ‰ํŽธ #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

ํ™œ๋™ํ•˜๊ธฐ