๐Ÿ ๊ธฐํƒ€/์ฝ”๋“œํ”„๋ ˆ์†Œ ์ฒดํ—˜๋‹จ_BE

[Git] Branch์˜ ์ดํ•ด | Branch ์ƒ์„ฑ ๋ฐ ์ด๋™ | ์‹ค์Šต

Dhey 2022. 1. 15. 17:22
๋ฐ˜์‘ํ˜•
Branch

๋ณธ๋ž˜์˜ ์†Œ์Šค์ฝ”๋“œ๋กœ ๋ถ€ํ„ฐ ํŒŒ์ƒํ•œ ๋…๋ฆฝ์ ์ธ ์ž‘์—… ๊ณต๊ฐ„


โ‰ซ Branch์˜ ํŠน์ง•

- ์ตœ์‹  ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ผ์ข…์˜ ํฌ์ธํ„ฐ ์—ญํ• ์„ ํ•œ๋‹ค.
- ๋งค์šฐ ๊ฐ€๋ฒผ์›Œ์„œ ์ƒ์„ฑ, ์ด๋™, ๋ณ‘ํ•ฉ(merge)์ด ๋งค์šฐ ์‰ฝ๋‹ค.
- ๋ชฉ์ ์— ๋”ฐ๋ผ ๋ถ„๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค.

Branch

 

master Branch

- Git์€ ๊ธฐ๋ณธ์ ์œผ๋กœ master ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
- master ๋ธŒ๋žœ์น˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ปค๋ฐ‹์„ ๋งŒ๋“ค์–ด์•ผ ์ƒ์„ฑ๋œ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
- ๋”ฐ๋ผ์„œ $ git commit -m "···" ๋ช…๋ น์–ด๋กœ commit์„ ์ƒ์„ฑํ•œ ํ›„,
ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด[$ git branch]๋กœ ํ™•์ธํ•ด๋ณด๋ฉด

ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜๋Š” master์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ธŒ๋žœ์น˜ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

โ‰ซ $ git branch ์ƒ์„ฑํ• _๋ธŒ๋žœ์น˜๋ช… ์ž…๋ ฅ

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

โ‰ซ $ git branch๋กœ ํ™•์ธํ•ด๋ณด๋ฉด ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 


 

HEAD

ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ผ์ข…์˜ ํฌ์ธํ„ฐ,
ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ๊ฐ€์žฅ ์ตœ์‹ (๋งˆ์ง€๋ง‰) ์ปค๋ฐ‹์— ๋Œ€ํ•œ ์Šค๋ƒ…์ƒท

 


โ€ป ๋งŒ์•ฝ HEAD๊ฐ€ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค๋ฉด?
ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ!

HEAD ์ด๋™์„ ํ™•์ธํ•˜๋Š” ์‹ค์Šต

ํ˜„์žฌ HEAD๋Š” ์ฒซ๋ฒˆ์งธ ์ปค๋ฐ‹ํ•œ "Commit 1"์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋‘๋ฒˆ์งธ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•œ ํ›„ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณด๋ฉด

HEAD๊ฐ€ ๋‘๋ฒˆ์งธ ์ปค๋ฐ‹ ์˜†์œผ๋กœ ์ด๋™ํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Š” master ๋ธŒ๋žœ์น˜๊ฐ€ ๋‘๋ฒˆ์งธ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๊ณ , master ๋ธŒ๋žœ์น˜๋ฅผ HEAD๋ผ๋Š” ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋” ์‰ฌ์šด ์ดํ•ด๋ฅผ ์œ„ํ•ด ๊ทธ๋ฆผ์„ ํ†ตํ•ด ๋ธŒ๋žœ์น˜๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด๊ฒ ๋‹ค.

์ฒซ๋ฒˆ์งธ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ–ˆ์„ ๋•Œ๋Š” master๋ธŒ๋žœ์น˜๊ฐ€ ์ฒซ๋ฒˆ์งธ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๊ณ ,
ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜๊ฐ€ master์ด๋ฏ€๋กœ HEAD๋ผ๋Š” ํฌ์ธํ„ฐ๋„ master๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ˜•ํƒœ๊ฐ€ ๋˜์—ˆ๋‹ค.

 

๋‘๋ฒˆ์งธ ์ปค๋ฐ‹์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๋ฉด ์ƒ์„ฑ๋จ๊ณผ ๋™์‹œ์— master๋ธŒ๋žœ์น˜๋Š” Commit 2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๊ณ ,
์ดํ›„ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ๋ณ€๊ฒฝ์ด๋‚˜ ์ด๋™ํ•˜์ง€ ์•Š๊ณ  master๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•ด์™”์œผ๋ฏ€๋กœ HEAD๋Š” master๋ธŒ๋žœ์น˜๋ฅผ ๊ณ„์† ๊ฐ€๋ฆฌํ‚ค๋Š” ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค.

(*์ดํ›„ master๋ธŒ๋žœ์น˜์—์„œ ์ปค๋ฐ‹์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ž๋™์œผ๋กœ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค)




์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ฐฉ๋ฒ•๋Œ€๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉด,

โ‰ซ $ git branch ์ƒ์„ฑํ• _๋ธŒ๋žœ์น˜๋ช… ์œผ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ ํ›„

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

โ‰ซ $ git branch๋กœ ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์—ฌ์ „ํžˆ master๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

โ‰ซ $ git log๋กœ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด HEAD๋Š” master๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๊ณ , feature-login์€ ์ƒ์„ฑ๋งŒ ๋œ ์ƒํƒœ์ž„์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.



์ด๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋ณด๋ฉด

feature-login์€ ์ƒ์„ฑ๋งŒ ๋œ ๊ฒƒ

feature-login์€ ์ตœ์‹  ์ปค๋ฐ‹์ธ Commit 2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ , ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜๋Š” master์ด๋ฏ€๋กœ

HEAD๋Š” ์—ฌ์ „ํžˆ master๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.

 

 

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

๋ธŒ๋žœ์น˜๋ฅผ ์ด๋™ํ•  ๋•Œ๋Š” $ git checkout ์ด๋™ํ• _๋ธŒ๋žœ์น˜๋ช… ์ด๋ž€ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ธŒ๋žœ์น˜๋ฅผ feature-login์œผ๋กœ ์ด๋™ํ•ด๋ณด๊ฒ ๋‹ค.

 

โ‰ซ $git checkout feature-login ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜(๋ฏผํŠธ์ƒ‰๊ธ€์”จ)๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค.

master → feature-login์œผ๋กœ ํ˜„์žฌ ๋ธŒ๋žœ์น˜๊ฐ€ ๋ณ€๊ฒฝ๋จ

โ‰ซ $ git branch ๋ช…๋ น์–ด๋กœ ํ˜„์žฌ ๋ธŒ๋žœ์น˜๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

โ‰ซ $ git log ๋ช…๋ น์–ด๋กœ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณด๋ฉด HEAD๊ฐ€ feature-login์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.

 

 

์ด๋ฅผ ๋‹ค์‹œ ๊ทธ๋ฆผ์œผ๋กœ ๋ณด๋ฉด

feature-login๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๋Š” ์ˆœ๊ฐ„ HEAD๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์ด ์™ผ→์˜ค ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋จ

HEAD๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์ด ์™ผ → ์˜ค ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

โ‰ซ ์ดํ›„ ์„ธ๋ฒˆ์งธ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•œ ํ›„ Git์˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณด์ž

๋‘๋ฒˆ์งธ ์ปค๋ฐ‹์€ ์•„์ง master๋ธŒ๋žœ์น˜๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๊ณ , ๋งˆ์ง€๋ง‰ ์ƒ์„ฑํ•œ ์ปค๋ฐ‹์€ feature-login๊ณผ HEAD๊ฐ€ ๋™์‹œ์— ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋Œ€์ƒ์ด ๋˜์—ˆ๋‹ค

 

์œ„ ๊ทธ๋ฆผ๊ณผ ์ด์–ด์„œ ํ™•์ธํ•ด๋ณด์ž

์„ธ๋ฒˆ์งธ ์ปค๋ฐ‹์ด ์ƒ์„ฑ๋จ๊ณผ ๋™์‹œ์— feature-login๋ธŒ๋žœ์น˜์™€ HEAD๋Š” Commit 3์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ˜•ํƒœ๊ฐ€ ๋˜์—ˆ๋‹ค.

 

 

โ€ป ์—ฌ๊ธฐ์„œ ์ž ๊น!

· ํ˜„์žฌ์˜ ๋ธŒ๋žœ์น˜์—์„œ master๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•œ๋‹ค๋ฉด Commit 3์˜ LoginService.java๊ฐ€ ์กด์žฌํ• ๊นŒ?

โ‰ซ No! ๊ฐ๊ฐ์˜ ๋ธŒ๋žœ์น˜๋Š” ์„œ๋กœ๊ฐ€ ๋…๋ฆฝ๋œ ๊ณต๊ฐ„์ด๊ธฐ ๋•Œ๋ฌธ์— merge๋ฅผ ํ•˜๊ธฐ ์ „ ๊นŒ์ง€๋Š” ๋ณ„๋„๋กœ ์šด์˜์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.


์ด์–ด์„œ ๋„ค๋ฒˆ์งธ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•ด๋ณด๊ฒ ๋‹ค.

$git checkout master ๋ช…๋ น์–ด๋กœ master๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๋ฉด HEAD๊ฐ€ master๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๊ณ ,

 

์—ฌ๊ธฐ์„œ ๋˜ ๋„ค๋ฒˆ์งธ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•˜๋ฉด master๋Š” Commit 4๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.

 

์ด๋•Œ์˜ Git ํžˆ์Šคํ† ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

1, 2, 4๋ฒˆ์งธ ์ปค๋ฐ‹๋งŒ ๋‚˜ํƒ€๋‚œ๋‹ค.

 

 

๊ทธ๋Ÿฌ๋‚˜, ๋ธŒ๋žœ์น˜์™€ ์ƒ๊ด€์—†์ด ๋ชจ๋“  ๋ธŒ๋žœ์น˜๋ฅผ ๊ทธ๋ž˜ํ”„ ํ˜•์‹์œผ๋กœ ๋ณด๊ณ ์‹ถ๋‹ค๋ฉด $ git log --all --graph ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

์•ž์˜ ๋นจ/์ดˆ๋กœ ๋ธŒ๋žœ์น˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ถ„๊ธฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ

 

 

Git์—๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•จ๊ณผ ๋™์‹œ์— ๋ฐ”๋กœ ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๋Š” ๋ช…๋ น๋„ ์กด์žฌํ•œ๋‹ค. 

์ด๋Š” $ git checkout -b ๋ธŒ๋žœ์น˜์ด๋ฆ„ ์ด๋‹ค.

๋ธŒ๋žœ์น˜ ์ƒ์„ฑ + ์ด๋™

์ด๋•Œ, checkout๋ช…๋ น์–ด๋กœ ๋ธŒ๋žœ์น˜ ์ด๋™์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— HEAD๋Š” ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์ง€๋งŒ,

์•„์ง issue๋ธŒ๋žœ์น˜์—์„œ ์ƒ์„ฑํ•œ ์ปค๋ฐ‹์ด ์—†์œผ๋ฏ€๋กœ issue๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์€ ์—†๋‹ค.

 

โ‰ซ ์ƒˆ๋กญ๊ฒŒ ๋‹ค์„ฏ๋ฒˆ์งธ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•œ ํ›„ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•ด๋ณด์ž

HEAD๋Š” issue๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Œ

๋‹ค์„ฏ๋ฒˆ์งธ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•˜์˜€๊ณ , ์ด๋ฅผ issue๋ธŒ๋žœ์น˜๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

 


 

 

์ฝ”๋“œํ”„๋ ˆ์†Œ Java ์›น ๊ฐœ๋ฐœ ์ฒดํ—˜๋‹จ ํ™œ๋™ ์ค‘ '์‹ค๋ฌด์ž๊ฐ€ ์•Œ๋ ค์ฃผ๋Š” Git ํ™œ์šฉํ•œ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ' ์ด๋Ÿฌ๋‹ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :)
์ฝ”๋“œํ”„๋ ˆ์†Œ URL: https://www.codepresso.kr/

 

ํ”„๋ฆฌ๋ฏธ์—„ IT ๊ต์œก ์„œ๋น„์Šค - ์ฝ”๋“œํ”„๋ ˆ์†Œ

www.codepresso.kr

 

๋ฐ˜์‘ํ˜•