[Git] Git Branch์— ๋Œ€ํ•œ ์ดํ•ด์™€ ํ™œ์šฉ

Posted by Euisuk's Dev Log on May 2, 2023

[Git] Git Branch์— ๋Œ€ํ•œ ์ดํ•ด์™€ ํ™œ์šฉ

์›๋ณธ ๊ฒŒ์‹œ๊ธ€: https://velog.io/@euisuk-chung/Git-Branch์—-๋Œ€ํ•œ-์ดํ•ด์™€-ํ™œ์šฉ

Git Branch์— ๋Œ€ํ•œ ์ดํ•ด์™€ ํ™œ์šฉ

Git Branch๋Š” Git์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Git Branch๋ž€ ๋ฌด์—‡์ธ์ง€, Git Branch๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  Git Branch๋ฅผ ํ™œ์šฉํ•œ ํ˜‘์—… ๋ฐฉ๋ฒ• ๋“ฑ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. Git Branch๋ž€?

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

  1. Git Branch ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

Git Branch๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2.1. Git Branch ์ƒ์„ฑ

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

1
$ git branch <์ƒˆ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>

2.2. Git Branch ์ด๋ฆ„ ๋ณ€๊ฒฝ

๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1
$ git branch -m <์ƒˆ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>

2.3. Git Branch ์‚ญ์ œ

๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1
$ git branch -d <์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>

2.4. Git Branch ์ „ํ™˜

๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1
$ git checkout <์ „ํ™˜ํ•  ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>
  1. Git Branch ์ „๋žต

Git์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋ธŒ๋žœ์นญ ์ „๋žต์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋Œ€ํ‘œ์ ์ธ Git ๋ธŒ๋žœ์นญ ์ „๋žต์ธ Git Flow, Github Flow, GitLab Flow๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

3.1. Git Flow ์ „๋žต

Git Flow ์ „๋žต์€ ํฌ๊ฒŒ develop, feature, release, hotfix, master ๋ธŒ๋žœ์น˜๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ธŒ๋žœ์น˜์—์„œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ๋˜๋ฉด release ๋ธŒ๋žœ์น˜์—์„œ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „์„ ๋งŒ๋“ค์–ด master ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

3.2. Github Flow ์ „๋žต

Github Flow ์ „๋žต์€ ๋‹จ์ผ ๋ธŒ๋žœ์น˜ master์—์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋Š” ์ „๋žต์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” feature ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์„ ํ•˜๋ฉฐ, ์ดํ›„ master ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ๋Š” master ๋ธŒ๋žœ์น˜๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

3.3. GitLab Flow ์ „๋žต

GitLab Flow ์ „๋žต์€ ํฌ๊ฒŒ production, feature, hotfix ๋ธŒ๋žœ์น˜๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ธŒ๋žœ์น˜์—์„œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉฐ, ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ๋˜๋ฉด production ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

  1. Git Branch ํ˜‘์—… ๋ฐฉ๋ฒ•

Git Branch๋ฅผ ํ™œ์šฉํ•œ ํ˜‘์—… ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

4.1. Git Branch๋ฅผ ํ™œ์šฉํ•œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ, ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ๋ฆฌ๋ทฐํ•  ์ˆ˜ ์žˆ๋„๋ก feature ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„, ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ”ผ๋“œ๋ฐฑ๋ฐ›๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

4.2. Git Branch๋ฅผ ํ™œ์šฉํ•œ Pull Request

๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ํ›„, ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด master ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” Pull Request๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Pull Request๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ณ , ์ดํ›„ master ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ฐœ์ƒ ๊ฐ€๋Šฅ ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

Git Branch ์ถฉ๋Œ์€ ๋‘ ๊ฐœ์˜ ๋ธŒ๋žœ์น˜์—์„œ ๊ฐ™์€ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ํŒŒ์ผ์„ ์—ด์–ด์„œ ์ถฉ๋Œ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์ถฉ๋Œ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•œ ํ›„, ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.

Git Branch ๊ด€๋ฆฌ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ธŒ๋žœ์น˜๋ฅผ ๋งŽ์ด ๋งŒ๋“ค ๊ฒฝ์šฐ, ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.
  • ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ ์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธŒ๋žœ์น˜ ์‚ฌ์šฉ์ด ๋„ˆ๋ฌด ์ž์œ ๋กœ์›Œ์ง€๋ฉด, ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, Git Branch ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์„ค์ •ํ•˜๊ณ , ๋ธŒ๋žœ์น˜๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŠธ๋Š” ๋งŒ์•ฝ์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ์ˆ˜์ •์„ ํ•ด์•ผํ•˜๋Š”์ง€ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :)



-->