roqkf

Git branch ๋ณธ๋ฌธ

๐Ÿ’ป Development/Git

Git branch

ahyeon7 2023. 4. 18. 00:11

๐Ÿ“Œ Git branch

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


๐Ÿ“Œ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑํ•˜๊ธฐ / ๋ณ€๊ฒฝํ•˜๊ธฐ (git switch)

์ด ๋•Œ, ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋กœ Git์ด ๋ฐ”๋ผ๋ณด๋Š” ๊ณณ, HEAD๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ switch๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” ์ƒ์„ฑ(create)์˜ ์˜๋ฏธ๋กœ -c ๋ฅผ ๋ถ™์—ฌ์ค˜์•ผ ํ•˜๊ณ , ๊ธฐ์กด์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜๋กœ ์˜ฎ๊ธธ ๋•Œ๋Š” ๋ถ™์ด์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

# feature๋ผ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ, -c๋ฅผ ๋ถ™์ธ๋‹ค.
git switch -c feature
# checkout์ด๋ผ๋Š” ๋ช…๋ น์–ด๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
git checkout -b feature

# ๊ธฐ์กด์— ์žˆ๋˜ main ๋ธŒ๋žœ์น˜๋กœ HEAD๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด, -c๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค.
git switch main
git checkout main

๐Ÿ“Œ ๋ธŒ๋žœ์น˜ ํ•ฉ์น˜๊ธฐ (git merge)

๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ๋๋‚˜๋ฉด ๋ธŒ๋žœ์น˜๋ฅผ main ๋ธŒ๋žœ์น˜์™€ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค.

# ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
git commit -m "๊ธฐ๋Šฅ1์˜ ์„ธ๋ถ€ ๊ธฐ๋Šฅ1"
git commit -m "๊ธฐ๋Šฅ1์˜ ์„ธ๋ถ€ ๊ธฐ๋Šฅ2"
git commit -m "๊ธฐ๋Šฅ1 ๊ฐœ๋ฐœ ์™„๋ฃŒ"
# ๋จธ์ง€๋ฅผ ์œ„ํ•ด main ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜
git switch main
# main ๋ธŒ๋žœ์น˜๋กœ feat/todo ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•จ
git merge feat/todo

์‹ค์ œ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ์‹œ์—๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๋กœ์ปฌ์—์„œ ํ•ฉ์น˜๊ธฐ ๋ณด๋‹ค๋Š” Github์˜ pull request ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ถฉ๋ถ„ํžˆ ํ™•์ธํ•˜๊ณ  ๋‚œ ๋‹ค์Œ์— ๋จธ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ๋กœ์ปฌ์—์„œ ๋จธ์ง€ํ•˜์ง€ ์•Š๊ณ  feature ๋ธŒ๋žœ์น˜๋ฅผ pushํ•˜์—ฌ pull request๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

git commit -m "๊ธฐ๋Šฅ1์˜ ์„ธ๋ถ€ ๊ธฐ๋Šฅ1"
git commit -m "๊ธฐ๋Šฅ1์˜ ์„ธ๋ถ€ ๊ธฐ๋Šฅ2"
git commit -m "๊ธฐ๋Šฅ1 ๊ฐœ๋ฐœ ์™„๋ฃŒ"
# Github ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ํ‘ธ์‹œ
git push origin feat/todo
# Github์—์„œ Pull Request

์•„๋ž˜ ์Šคํฌ๋ฆฐ์ƒท์—์„œ ์œ ๋ช…ํ•œ ์˜คํ”ˆ์†Œ์Šค toast UI์˜ pull request์™€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ“Œ ๋ธŒ๋žœ์น˜ ์‚ญ์ œํ•˜๊ธฐ (git branch -d)

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

๋กœ์ปฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ๋Š” git branch -d <๋ธŒ๋žœ์น˜๋ช…> ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค.

git branch -d feat/todo

Git์€ ์›ํ™œํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ, ๋ธŒ๋žœ์น˜๊ฐ€ ํ•ฉ์ณ์ง€์ง€ ์•Š์œผ๋ฉด ์‚ญ์ œํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์„ค์ •์ด ๋˜์–ด์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ข…์ข… ๋‹ค ๋งŒ๋“ค์ง€ ๋ชปํ•œ ๊ธฐ๋Šฅ์˜ ๊ธฐ๋ก์„ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ -D ์˜ต์…˜์„ ์“ฐ๋ฉด ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

git branch -D feat/todo

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

'๐Ÿ’ป Development > Git' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Github Milestone  (0) 2023.04.18
Github Issues  (0) 2023.04.18
Github Project ์นธ๋ฐ˜  (0) 2023.04.18
์ƒˆ๋กœ์šด Github repository ๋งŒ๋“ค๊ธฐ  (0) 2023.04.18
Github ๋ฆฌํฌ์ง€ํ† ๋ฆฌ  (1) 2023.04.18