๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป | CS/Git

[Git&Github] Git ์ •๋ฆฌ-4 (branch, merge)

by KASSID 2023. 10. 29.

๋ชฉ์ฐจ

    728x90

    1. git branch

    ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด์˜ ๊ธฐ๋Šฅ์„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

    ์ด๋•Œ ๊ธฐ์กด ํŒŒ์ผ์„ ๊ทธ๋Œ€๋กœ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์ง€๋งŒ

    ์ž‘์—… ๋„์ค‘ ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด๊ฐ€ ๋ง๊ฐ€์ ธ๋ฒ„๋ฆด ์ˆ˜๋„ ์žˆ๋Š” ๋ฆฌ์Šคํฌ๋ฅผ ์•ˆ๊ณ ์žˆ์–ด์•ผํ•œ๋‹ค.

     

    ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑํ•ด์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

    git์˜ branch ๊ธฐ๋Šฅ์€ ์†์‰ฝ๊ฒŒ ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑํ•ด์ค€๋‹ค.

     

     

    ์‚ฌ์šฉ๋ฒ•

    git branch ๋ธŒ๋žœ์น˜๋ช…

    ์œ„ ๋ช…๋ น์–ด๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์˜ ์‚ฌ๋ณธ์ด ํ•˜๋‚˜ ์ƒ์„ฑ๋œ๋‹ค.

     

    git switch ๋ธŒ๋žœ์น˜๋ช…

    ์ƒ์„ฑํ•œ ๋ธŒ๋žœ์น˜๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์‚ฌ๋ณธ์—์„œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

     

     

    ์˜ˆ์‹œ 1

    sub๋ผ๋Š” branch๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.

     

    git status๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ˜„์žฌ ์–ด๋– ํ•œ branch์—์„œ ์ž‘์—… ์ค‘์ธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

    sub banch์—์„œ commit์„ ํ•œ ๋’ค

    VSC์˜ extension์ธ git graph๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด๋ฉด

    ์•„๋ž˜์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด branch์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์ด ๊ธฐ๋ก๋˜์–ด์žˆ๋‹ค.

     

    ๋‹ค์‹œ ๋ฉ”์ธ branch๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ๋‹ค๋ฉด

    ์œ„์—์„œ ํ™•์ธ๋˜๋Š” main branch๋กœ ๋Œ์•„๊ฐ€๋ฉด ๋œ๋‹ค.

     

     

    ์˜ˆ์‹œ 2

    ์ƒˆ๋กœ์šด branch์ธ sub์—์„œ ํŒŒ์ผ์„ ํ•˜๋‚˜ ์ƒ์„ฑํ•œ๋‹ค.

     

     

    ์œ„์˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ๋’ค commit์„ ํ•ด์ค€๋‹ค.

     

    git graph์—์„œ ํ™•์ธํ•ด๋ณด๋ฉด ์œ„์™€ ๊ฐ™๋‹ค.

     

    ์ด์ œ ๋‹ค์‹œ main์œผ๋กœ ๋ฐ”๊พธ์–ด๋ณด๋ฉด

    sub ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ–ˆ๋˜ sub.txt๋ฅผ ์ฐพ์•„๋ณผ ์ˆ˜ ์—†๊ณ ,

    ์œ„์™€ ๊ฐ™์€ ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

     

     

     

    2. git merge

    ์ด๋ฒˆ์—๋Š” branch๋ฅผ ํ•ฉ์ณ๋ณด์ž.

    ํ˜„์žฌ branch์˜ ์ƒํƒœ

    ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์น˜๋Š” ๊ฒƒ์€ merge ๋ผ๊ณ  ํ•œ๋‹ค.

     

    ์‚ฌ์šฉ๋ฒ•

    ๋จผ์ € main ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•œ๋‹ค.

    git switch main

     

    mergeํ•  ๋ธŒ๋žœ์น˜๋ช…์„ ์ด์šฉํ•ด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

    git merge ๋ธŒ๋žœ์น˜๋ช…

     

    ์ด๋•Œ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์ฃผ์˜์‚ฌํ•ญ์ด ์žˆ๋‹ค.

     

    ์„œ๋กœ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ๊ฐ™์€ ํŒŒ์ผ์˜ ๊ฐ™์€ ์ค„์„ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ ์ด์ฒ˜๋Ÿผ

    merge conflict๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

     

    ์ด๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํŒŒ์ผ์„ ์—ด์–ด๋ณด๋ฉด

     

    ์ด๋•Œ 2๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜๋งŒ ๋‚จ๊ธด ํ›„ ๋‚˜๋จธ์ง€๋ฅผ ๋‹ค ์ง€์›Œ์ค€ ๋‹ค์Œ, (VSC์˜ ๊ฒฝ์šฐ ์œ„์— ์กด์žฌํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.)

    ํ•ด๋‹น ํŒŒ์ผ์„ ์ƒˆ๋กญ๊ฒŒ commit ํ•ด์ฃผ๋ฉด merge๊ฐ€ ๋งˆ๋ฌด๋ฆฌ๊ฐ€ ๋œ๋‹ค. 

    git add ์˜ค๋ฅ˜๋ฐœ์ƒํ–ˆ๋˜ํŒŒ์ผ๋ช…
    git commit -m "๋ฉ”์„ธ์ง€"

     

     

    ๋Œ“๊ธ€