ETC

๐Ÿฅ ์นด์นด์˜ค ํ…Œํฌ ์บ ํผ์Šค - Git Branch

Beomsu Koh 2023. 4. 24.

Git Branch - ๐Ÿฅ ์นด์นด์˜ค ํ…Œํฌ ์บ ํผ์Šค

git branch๋Š” Git์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ, ํ”„๋กœ์ ํŠธ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค.
๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋™์‹œ์— ํ”„๋กœ์ ํŠธ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ดํ›„์— ๊ฐ ์ž‘์—…์„ ๋ณ‘ํ•ฉํ•˜์—ฌ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์„ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.

  1. ๋…๋ฆฝ์ ์ธ ์ž‘์—…
    1. ๋ธŒ๋žœ์น˜๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋“ค์€ ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    2. ์ด๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์ธ ์ž‘์—… ํ๋ฆ„์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ณ‘ํ•ฉ
    1. ์ž‘์—…์ด ์™„๋ฃŒ๋œ ๋ธŒ๋žœ์น˜๋Š” ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    2. ์ด ๊ณผ์ •์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, Git์€ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐ€์ง€์น˜๊ธฐ
    1. ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ธŒ๋žœ์น˜๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์˜ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.

git branch๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ , ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ์ž์˜ ์ž‘์—…์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

๋ธŒ๋žœ์น˜ ๋ช…๋ น์–ด

๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

git branch [๋ธŒ๋žœ์น˜ ์ด๋ฆ„]


์œ„์™€ ๊ฐ™์ด ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋ธŒ๋žœ์น˜ ์ด๋™

git switch [๋ธŒ๋žœ์น˜ ์ด๋ฆ„]

๋ธŒ๋žœ์น˜ ์‚ญ์ œ

git branch -D [๋ธŒ๋žœ์น˜ ์ด๋ฆ„]

Branch ๊ฐ„์€ ๋…๋ฆฝ์ ์ด๋‹ค

  • Main ๋ธŒ๋žœ์น˜
  • fb ๋ธ”๋žœ์น˜

    • fb ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•˜๊ธฐ ์ „, ๋‘ ๋ธŒ๋žœ์น˜๋ฅผ ๋น„๊ตํ–ˆ์„ ๋•Œ ๊ฐ™์€ ํŒŒ์ผ์ธ๋ฐ ๋‚ด์šฉ์ด ๋‹ค๋ฆ„์ด ๋ณด์ž…๋‹ˆ๋‹คใ…ฃ
      ์ฆ‰ ๋…๋ฆฝ์ ์ธ ๊ฒƒ์ด์ฃ !

Merge๋Š” ๋•ก๊ฒจ์˜จ๋‹ค๋Š” ๊ฐœ๋…์ด๋‹ค

์ด์ œ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณต์‚ฌํ•ด์„œ ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ๊ฐ€์ ธ์™”๋‹ค ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•ฉ๋‹ˆ๋‹ค
์•„๋ž˜์ฒ˜๋Ÿผ, main ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•ด์„œ, git merge fbํ•˜๋ฉด, ํ•ฉ์ณ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

Git Checkout๊ณผ Switch์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€?

git checkout๊ณผ git switch๋Š” ๋‘˜ ๋‹ค ๋ธŒ๋žœ์น˜๋ฅผ ์ „ํ™˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” Git ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Git 2.23 ๋ฒ„์ „๋ถ€ํ„ฐ git switch ๋ช…๋ น์–ด๊ฐ€ ๋„์ž…๋˜์—ˆ๊ณ , ์ด ๋ช…๋ น์–ด๋Š” git checkout์˜ ๋ธŒ๋žœ์น˜ ์ „ํ™˜ ๊ธฐ๋Šฅ์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

git checkout์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:

  1. ๋ธŒ๋žœ์น˜ ์ „ํ™˜: git checkout branch-name์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ปค๋ฐ‹์œผ๋กœ ์ด๋™: git checkout commit-hash๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ปค๋ฐ‹์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ํŒŒ์ผ ๋ณต์›: git checkout -- file-name์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํŒŒ์ผ์„ ์ด์ „ ์ปค๋ฐ‹ ์ƒํƒœ๋กœ ๋ณต์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

git switch๋Š” ๋ธŒ๋žœ์น˜ ์ „ํ™˜์—๋งŒ ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ๋ธŒ๋žœ์น˜ ์ „ํ™˜: git switch branch-name์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ƒˆ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ์ „ํ™˜: git switch -c new-branch-name์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

git switch์˜ ๋„์ž…์œผ๋กœ ์ธํ•ด ๋ธŒ๋žœ์น˜ ์ „ํ™˜๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์ด git checkout์—์„œ ๋ถ„๋ฆฌ๋˜์—ˆ๊ณ , ์ด์ œ git switch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋žœ์น˜ ์ „ํ™˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ€์กฑํ•œ ์ ์ด๋‚˜ ์ž˜๋ชป ๋œ ์ ์„ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์‹œ์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :>

๋Œ“๊ธ€