Git Conflict ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๐Ÿ“„ merge conflict

merge๋ฅผ ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ž๋™์ ์œผ๋กœ ํ•ด๊ฒฐ์ด ์•ˆ๋˜๋Š” ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ์ƒํ™ฉ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋กœ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ๋™์ผํ•œ ํŒŒ์ผ์„ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด merge conflict๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

conflict

Automatic merge failed: ์ž๋™ merge๊ฐ€ ์‹คํŒจ ๋จ.

git status๋ฅผ ์ž…๋ ฅํ•ด ํ™•์ธํ•ด ๋ณด๋ฉด ๋™์‹œ์— ์ˆ˜์ •๋œ ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

conflict2

cat (ํŒŒ์ผ๋ช…)์„ ์ž…๋ ฅํ•˜๋ฉด conflict๊ฐ€ ๋ฐœ์ƒํ•œ ๋ถ€๋ถ„์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์ž๋™์œผ๋กœ ์‚ฝ์ž…๋œ ๋ฌธ์ž์—ด์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

conflic3

๐Ÿ“„ merge conflict ์ˆ˜๋™์  ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

  1. open ํ•ด๋‹น ํŒŒ์ผ (์œˆ๋„์šฐ: start ํ•ด๋‹นํŒŒ์ผ)๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ conflict๊ฐ€ ๋ฐœ์ƒํ•œ ํŒŒ์ผ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค.
    conflict4

  2. ์‚ฌ์šฉํ•  ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ  ์‚ญ์ œํ•˜๊ฑฐ๋‚˜, ๋ชจ๋‘ ๋‹ค ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฉ”์„ธ์ง€๋งŒ ์‚ญ์ œ ํ•œ์ฑ„ ์ €์žฅํ•œ ๋’ค ํŒŒ์ผ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

  3. git add๋ฅผ ์ด์šฉํ•ด conflict๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Œ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
    conflict5

  4. git merge --continue๋ฅผ ์ž…๋ ฅํ•ด merge๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•ฉ๋‹ˆ๋‹ค. conflict6

๐Ÿ“„ merge conflict tool์„ ์ด์šฉํ•œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•: vscode

  1. git config --global -e๋ฅผ ์ž…๋ ฅํ•ด์„œ vscode๋ฅผ ์—ด์–ด์ค๋‹ˆ๋‹ค.

  2. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์„œ merge tool์„ vscode๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    tool2

  3. conlict๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, git mergetool์„ ์ž…๋ ฅํ•˜๋ฉด vscode๋กœ ํˆด์ด ์—ด๋ฆฌ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“„ merge conflict tool์„ ์ด์šฉํ•œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•: p4merge

  1. p4merge๋ฅผ ๊ฒ€์ƒ‰ ํ›„ ๋‹ค์šด๋ฐ›์Šต๋‹ˆ๋‹ค.

  2. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์„œ merge tool์„ p4code๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    tool3

  3. conlict๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, git mergetool์„ ์ž…๋ ฅํ•˜๋ฉด vscode๋กœ ํˆด์ด ์—ด๋ฆฌ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

  • ๋“œ๋ฆผ์ฝ”๋”ฉ

Leave a comment