๐ŸŽ git์˜ branch ๋งŒ๋“ค๊ธฐ

์œ ์ง„ยท2025๋…„ 5์›” 17์ผ

git

๋ชฉ๋ก ๋ณด๊ธฐ
5/13

branch๋ž€?

์ปค๋ฐ‹์„ ํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
์›๋ณธ ์ฝ”๋“œ์— ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ปค๋ฐ‹ํ•ด๋„ ๋˜๊ฒ ์ง€๋งŒ ์ง„์งœ์ง„์งœ ํ˜น์‹œ๋‚˜ ๋ฌด์–ธ๊ฐ€ ์ž˜๋ชป๋ผ์„œ ๊ทธ๋™์•ˆ ์งฐ๋˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค ๋ง๊ฐ€์ง„๋‹ค๋ฉด? ํ•˜๋Š” ๊ฑฑ์ •์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

์ด๋Ÿด ๋•Œ ์•ˆ์ „ํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณต์‚ฌ๋ณธ์—์„œ ์ž‘์—…์„ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์€๋ฐ ๊ทธ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋ฐ”๋กœ branch๋‹ค.

๋ง ๊ทธ๋Œ€๋กœ git์—์„œ branch๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋ณต์‚ฌ๋ณธ์ด๋‹ค.
์›๋ณธ ์ฝ”๋“œ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ ๋„ ๊ทธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

branch ๋งŒ๋“œ๋Š” ๋ฒ•

  • git branch ๋ธŒ๋žœ์น˜์ด๋ฆ„: ์ƒˆ๋กœ์šด branch๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • git switch ๋ธŒ๋žœ์น˜์ด๋ฆ„: ์ƒ์„ฑํ•œ branch๋กœ ์ด๋™ํ•œ๋‹ค.
    (์˜›๋‚ ์—” git checkout ๋ธŒ๋žœ์น˜์ด๋ฆ„ ์ผ์ง€๋งŒ, ์š”์ฆ˜์€ switch๊ฐ€ ๋” ์ง๊ด€์ ์ž„.)
  • git status: ํ˜„์žฌ ์–ด๋А branch์— ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

์ด ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด์„œ ์‹ค์Šต์„ ํ•˜๋‚˜ ์ง„ํ–‰ํ•œ๋‹ค.

์‹ค์Šต

  1. git branch coupon์œผ๋กœ branch ์ƒ์„ฑ.
  2. git switch coupon์œผ๋กœ ์ด๋™.
  3. coupon branch์—์„œ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  ์ปค๋ฐ‹ํ•œ๋‹ค.
    main branch๋Š” ์˜ํ–ฅ ์•ˆ ๋ฐ›์Œ.

switch๊นŒ์ง€ ํ–ˆ๋‹ค๋ฉด ํŒŒ์ผ ์ˆ˜์ •์„ ์ง„ํ–‰ํ•œ๋‹ค.

์ˆ˜์ •ํ•œ ํ›„์— ์Šคํ…Œ์ด์ง•๊ณผ ์ปค๋ฐ‹๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋‹ค.

์ด๋Ÿฌ๊ณ  ๋‹ค์‹œ main๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๋ฉด

์ถ”๊ฐ€ํ–ˆ๋˜ ํŒŒ์ผ์ด ์‚ฌ๋ผ์ง€๋ฉฐ ๋‹ค์‹œ ์•„๊นŒ์˜ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ„๋‹ค. (main ๋ธŒ๋žœ์น˜)

yay๋ผ๊ณ  ์ปค๋ฐ‹์„ ํ•œ ๋ฒˆ ๋”ํ•˜๊ณ  ๋‹ค์‹œ main์—์„œ log๋ฅผ ๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ๋‚˜๋‰˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ˆ˜์ •ํ•œ ์‚ฌํ•ญ์ด ์ž˜ ๋™์ž‘๋˜์–ด์„œ main์— ํ•ฉ์น˜๊ณ ์‹ถ๋‹ค! ๊ทธ๋Ÿฌ๋ฉด merge๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค.

branch ํ•ฉ์น˜๊ธฐ (merge)

branch์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์ด ๋งˆ์Œ์— ๋“ค๋ฉด ์›๋ณธ์ธ main branch์— ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฅผ merge๋ผ๊ณ  ํ•œ๋‹ค.

merge ๋ฐฉ๋ฒ•

  1. git switch main: main branch๋กœ ์ด๋™ํ•œ๋‹ค.
  2. git merge ๋ธŒ๋žœ์น˜์ด๋ฆ„: ํ•ด๋‹น branch ๋‚ด์šฉ์„ main์— ํ•ฉ์นœ๋‹ค.
    ์˜ˆ: git merge coupon โ†’ coupon branch์˜ ์ฝ”๋“œ๊ฐ€ main์— ์ถ”๊ฐ€๋จ.

merge ์‹œ ์ฃผ์˜์‚ฌํ•ญ: conflict

๊ฐ™์€ ํŒŒ์ผ์˜ ๊ฐ™์€ ๋ถ€๋ถ„์„ main๊ณผ branch์—์„œ ๋‹ค๋ฅด๊ฒŒ ์ˆ˜์ •ํ•˜๋ฉด conflict๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์šฐ๋ฆฌ ์ปดํ“จํ„ฐ๊ฐ€ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ์—๋””ํ„ฐ์—์„œ ์ถฉ๋Œ ํŒŒ์ผ์„ ์—ด์–ด ์ˆ˜์ •ํ•œ๋‹ค.
  • <<<<, >>>>, ==== ๊ฐ™์€ ํ‘œ์‹œ๋Š” ์ง€์šฐ๊ณ  ์›ํ•˜๋Š” ์ฝ”๋“œ๋งŒ ๋‚จ๊ธด๋‹ค.
  • ์ˆ˜์ • ํ›„ git add ํŒŒ์ผ๋ช…, git commit -m '๋ฉ”์„ธ์ง€'๋กœ ํ•ด๊ฒฐํ•œ๋‹ค.

์‹ค์Šต

main branch์—์„œ app.txt์˜ ๋‘ ๋ฒˆ์งธ ์ค„์„ ์ˆ˜์ •ํ•ด๋ณด๊ฒ ๋‹ค.

๊ทธ๋ฆฌ๊ณ  coupon branch์—์„œ ๋‘ ๋ฒˆ์งธ ์ค„์„ ๋‹ค๋ฅด๊ฒŒ ์ˆ˜์ •ํ•ด๋ดค๋‹ค.

์ด์ œ main branch๋กœ ์ด๋™ํ•ด์„œ coupon branch๋ฅผ mergeํ•ด๋ณด์ž.

์ด๋ ‡๊ฒŒ ๋œจ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋‚จ๊ธฐ๊ณ  ๋‹ค ์ง€์›Œ๋ณด์ž. (vs code๋Š” ์œ„์— 1๋ฒˆ ์ค„ ๋ฐ‘์— ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ํ•ด๊ฒฐํ•ด๋„ ๋œ๋‹ค)

์ด์ œ ๋‹ค์‹œ addํ•˜๊ณ  commitํ•˜๋ฉด ๋œ๋‹ค.

์ด์ œ log๋ฅผ ๋ณด๋ฉด ์ž˜ ํ•ด๊ฒฐ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

ํ˜‘์—… ์‹œ branch ํ™œ์šฉ

  • ๊ฐ์ž branch์—์„œ ์ž‘์—… ํ›„ main์— mergeํ•œ๋‹ค.
  • ์ฝ”๋“œ ์ถฉ๋Œ์„ ์ค„์ด๊ณ  ์•ˆ์ •์ ์œผ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๋„ ์‹ค์Šตํ•ด๋ดค๋˜ ๋‚ด์šฉ์ด๋ผ ์•„์ฃผ ์‰ฌ์› ๋‹ค! ์‹ค์Šต์„ ํ†ตํ•ด ์กฐ๊ธˆ ๋” ์ต์ˆ™ํ•ด์ง„ ๋А๋‚Œ ์ •๋„?

0๊ฐœ์˜ ๋Œ“๊ธ€