๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸชดEtc/๐Ÿ˜บ Git

[ Git ] ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ Git Flow๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ์„ ํ–ˆ๋Š”๊ฐ€?

by MuGeon Kim 2023. 4. 16.
๋ฐ˜์‘ํ˜•

1. ๊ธ€์„ ์ž‘์„ฑํ•œ ์ด์œ 

์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ๊ฐ€ ์ด๋ฒˆ์— ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ Git Flow ๋ฐฉ์‹์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ์„ ํ–ˆ๋Š”์ง€ ์ •๋ฆฌํ•˜๋Š” ๊ธ€์„ ์ž‘์„ฑ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  Git flow ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ž๋ฃŒ๋Š” ์ง€๊ธˆ ๋งŽ์ด ์žˆ์ง€๋งŒ ์ €๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์‹œ์ค‘์— ์žˆ๋Š” ๋‚ด์šฉ์„ ๋‹ค ์ด์šฉํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ์™€ ํ˜„์žฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์—ฌ ๊ณต์œ ํ•˜๋ฉด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ๊ธ€์„ ์ž‘์„ฑ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

2. Git VS SVN

์ง€๊ธˆ๊นŒ์ง€ ํŒ€ ํ”„๋กœ์ ํŠธ๋Š” 2๊ฐœ๋ฅผ ์ง„ํ–‰์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์€ ๊ตญ๋น„์ง€์›์—์„œ ์ง„ํ–‰ํ•œ SVN ํ˜‘์—… ํ”„๋กœ์ ํŠธ ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ Git์œผ๋กœ ์ง„ํ–‰ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด SVN๊ณผ Git์— ๋Œ€ํ•ด์„œ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ์‚ดํŽด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๊ฒ ์Šต๋‹ˆ๋‹ค.

Git๊ณผ SVN์€ ํ˜•์ƒ๊ด€๋ฆฌ ํˆด๋กœ ์†Œ์Šค์˜ ๋ณ€ํ™”๋ฅผ ๋Š์ž„์—†์ด ๊ด€๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค๋ฅผ ๋ฒ„์ „ ๋ณ„๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ๊ฐœ๋ฐœํ•  ๋•Œ ์œ ์šฉ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

SVN๊ณผ Git์˜ ์ฐจ์ด์ 

- Git์ด SVN๊ณผ ๋‹ค๋ฅธ ์ ์€ ๋ถ„์‚ฐํ˜• ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
- SVN : ์ค‘์•™ ์„œ๋ฒ„์— ์†Œ์Šค์ฝ”๋“œ์™€ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ €์žฅ
- Git : ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ PC์™€ ์ €์žฅ์†Œ์— ๋ถ„์‚ฐํ•ด์„œ ์ €์žฅ
- ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์•™ ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ปค๋ฐ‹์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋กœ์ปฌ ์ €์žฅ์†Œ๋“ค์„ ์ด์šฉํ•˜์—ฌ ์ค‘์•™ ์ €์žฅ์†Œ์˜ ๋ณต์›๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
- ์‚ฌ๋ณธ์„ ๋กœ์ปฌ์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— GIT์ด SVN์— ๋น„ํ•ด ํ›จ์”ฌ ๋น ๋ฅด๋‹ค. (SVN์€ ๋ณ€๊ฒฝ ๋กœ๊ทธ ํ•˜๋‚˜ ๋ณด๋Š” ๊ฒƒ๋„ ์ธํ„ฐ๋„ท์„ ๊ฒฝ์œ ํ•ด์•ผ ํ•œ๋‹ค.)

3. ๋‚˜๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ˜‘์—…์„ ํ•˜์˜€๋Š”๊ฐ€?

์ €๋ฒˆ์— Git flow์— ๋Œ€ํ•ด ํ•™์Šต์„ ํ•˜์—ฌ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์— Git flow ๋ฐฉ์‹์„ ์ ์šฉ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

Git Flow ์ „๋žต

๋ธŒ๋žœ์น˜ ์ „๋žต์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜์˜€๋‹ค. ๋ฐ‘์— ๊ฐ•๋‚จ์–ธ๋‹ˆ ๋ธ”๋กœ๊ทธ์—์„œ ๋งŽ์€ ๋„์›€์„ ๋ฐ›์•˜๋‹ค. https://blog.gangnamunni.com/post/understanding_git_flow/ GitFlow? ๋“ค์–ด๋„ ๋ดค๊ณ , ์“ฐ๊ณ ๋„ ์žˆ๋Š”๋ฐ... GitFlow ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์“ฐ๊ธฐ by

pos04167.tistory.com

๋ฌผ๋ก  ์ฒ˜์Œ์œผ๋กœ GIT์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ์„ ํ•˜์˜€๊ณ  Git flow๋ฅผ ํ•™์Šต์„ ํ•˜์˜€์„ ๋•Œ์™€ ์‹ค์ œ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜์˜€์„ ๋•Œ ๋งŽ์€ ๊ณ ๋ฏผ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ์ €๋Š” ๊ฐ•๋‚จ์–ธ๋‹ˆ์˜ Git flow์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ํ•™์Šต์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ์ฒ˜์Œ์œผ๋กœ ๊ณ ๋ฏผํ•œ ๋ถ€๋ถ„์€ ๊ณผ์—ฐ ์ด๋ ‡๊ฒŒ ๋งŽ์€ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉ์„ ํ•˜๋Š”๊ฒŒ ์ง€๊ธˆ ํ”„๋กœ์ ํŠธ์— ์ข‹์€๊ฐ€? ์ƒ๊ฐ์„ ํ•˜์˜€์„ ๋•Œ ์ €๋Š” NO๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” Feat ์ „๋žต์„ ์‚ฌ์šฉํ•˜์—ฌ master , developer , feat ๋ธŒ๋žœ์น˜๋ฅผ ์ด์šฉํ•˜์—ฌ git flow ์ „๋žต์˜ ๋‚œ์ด๋„๋ฅผ ๋‚ฎ์ถ”์–ด ํ˜‘์—…์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ feat๋Š” ๊ธฐ๋Šฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ์„ ํ•˜์˜€๊ณ . ex) feat/mg_member

์ถ”๊ฐ€์ ์ธ issue๊ฐ€ ๋ฐœ์ƒ์„ ํ•˜๋ฉด issue์— ๋“ฑ๋กํ•˜๊ณ  ๋ฒˆํ˜ธ๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. feat/#22

 

4. ์ฝ”๋“œ ์ปจ๋ฒค์…˜์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ๋…ธ๋ ฅ์„ ํ•˜์˜€๋‹ค.

์ฝ”๋“œ ์ปจ๋ฒค์…˜๊ณผ ํŒ€ ํ”„๋กœ์ ํŠธ์˜ ์•ฝ์†์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ถ€๋ถ„์˜ ์ค‘์š”์„ฑ์€ ์ œ๊ฐ€ ๊ตญ๋น„์ง€์› ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์ฝ”๋“œ ์ปจ๋ฒค์…˜๊ณผ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์•ฝ์†์„ ํ•˜์ง€ ์•Š๊ณ  ์ง„ํ–‰์„ ํ•˜์˜€์„ ๋•Œ ๋‚˜์ค‘์— ๋งŽ์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒฝํ—˜ํ•˜๊ณ  ๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ ์ตœ๋Œ€ํ•œ ์ •ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์„ ํ•ด์•ผ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์ด์ „์— ํŒ€์›์—๊ฒŒ ์ œ๊ฐ€ ์ฝ”๋“œ ์ปจ๋ฒค์…˜ ๋ฐ ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜์„ ํŒ€์›์—๊ฒŒ ๊ณต์œ ๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

Git Flow ์ „๋žต

๋ธŒ๋žœ์น˜ ์ „๋žต์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜์˜€๋‹ค. ๋ฐ‘์— ๊ฐ•๋‚จ์–ธ๋‹ˆ ๋ธ”๋กœ๊ทธ์—์„œ ๋งŽ์€ ๋„์›€์„ ๋ฐ›์•˜๋‹ค. https://blog.gangnamunni.com/post/understanding_git_flow/ GitFlow? ๋“ค์–ด๋„ ๋ดค๊ณ , ์“ฐ๊ณ ๋„ ์žˆ๋Š”๋ฐ... GitFlow ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์“ฐ๊ธฐ by

pos04167.tistory.com

 

 

Git Commit Convention์„ค์ •ํ•˜๊ธฐ

Git Commit Convention์„ ์™œ ์ •๋ฆฌํ•˜์ง€? ๋ณดํ†ต git๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด commit์„ message๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ๋˜๋Š”์ง€? ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณ ๋ฏผ์„ ๊ฐ€์กŒ์„ ๋ถ€๋ถ„์ด๋‹ค. ๋ณดํ†ต์€ git commit message style guide๋ฅผ ํ†ตํ•ด ์ž‘์„ฑํ•˜๋ฉด ํ˜‘์—…์„ ํ•˜๋ฉด์„œ

pos04167.tistory.com

 

 

Google Java Style Guide ์ ์šฉํ•˜๊ธฐ

์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ์ปจ๋ฒค์…˜์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•œ๋‹ค. ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ์ปจ๋ฒค์…˜์€ ํŠน์ • ์กฐ์ง, ํ”„๋กœ์ ํŠธ, ๋ธŒ๋žœ๋“œ ๋˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ผ๊ด€๋œ ๋””์ž์ธ, ๋ฌธ์„œ, ์ฝ”๋“œ ๋ฐ ์ฝ˜ํ…์ธ  ์Šคํƒ€์ผ์„ ์ •์˜

pos04167.tistory.com

 

5. Merge์ „๋žต์€ ์–ด๋–ป๊ฒŒ ์„ค์ •์„ ํ•ด์•ผ๋ ๊นŒ?

์ €๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ merge ์ „๋žต์— ๋Œ€ํ•ด ๊ณ ๋ฏผ์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ์Šค์ฟผ์‹œ ๋จธ์ง€์™€ pull request merge ์ด 2๊ฐœ์˜ ๋ฐฉ์‹์„ ๊ณ ๋ฏผ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ์ฒ˜์Œ์—๋Š” Pull Request ๋จธ์ง€ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ Git Log์˜ ๊ด€๋ฆฌ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ๋‚˜์ค‘์— ๋” ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ์ด ์ƒ๊ธด๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ๋‹ค๋ฅธ Merge ๋ฐฉ์‹์„ ์ฐพ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

๊ทธ๋ž˜์„œ Squash & Merge ๋ฐฉ์‹์„ ์ฐพ๊ฒŒ ๋˜์–ด ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Git Log์˜ ๊ด€๋ฆฌ๊ฐ€ ๊ธฐ์กด์˜ ๋ฐฉ์‹๋ณด๋‹ค ๋ณด๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

Git์˜ ๋‹ค์–‘ํ•œ ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ ๋ฐฉ๋ฒ• (Merge, Squash & Merge, Rebase & Merge)

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

hudi.blog

 

 

ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์ œ๊ฐ€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์ด Squash & Merge ๋ฐฉ์‹ ๋ณด๋‹ค๋Š” Pull Request ๋ฐฉ์‹์ด ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•