๐Ÿ” Git & GitHub ๊ธฐ๋ณธ ๊ฐœ๋… - (2) : Branch

sebinnnnnยท2023๋…„ 1์›” 25์ผ
0

GitHub

๋ชฉ๋ก ๋ณด๊ธฐ
4/6
post-thumbnail

๐Ÿ“ย GitHub์˜ Branch

branch๋ž€? : ๋ธŒ๋žœ์น˜๋Š” ๋…๋ฆฝ์ ์ธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด๋‹ค.

โœ… branch๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€?
ํ˜‘์—…์„ ํ•  ๋•Œ ๋˜‘๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๋‹ค ํ•จ๊ป˜ ์ž‘์—…ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐ์ž ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ• ์ง€ ์ •ํ•ด๋†“๊ณ , ์ถ”ํ›„์— ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ๋˜์—ˆ์„ ๋•Œ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑ์‹œํ‚จ๋‹ค. ์ด๋•Œ, ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜์—์„œ ํ•จ๊ป˜ ์ž‘์—…์„ ํ•˜๋ฉด ์ถฉ๋Œ์ด ์˜ค๊ฑฐ๋‚˜ ๊ด€๋ฆฌ์— ์žˆ์–ด ์–ด๋ ค์›€์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ž์˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ €์žฅํ•  ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ๋ธŒ๋žœ์น˜์— ์ž‘์—… ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.
main ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์–‘ํ•œ ๋ธŒ๋žœ์น˜๊ฐ€ ๋ป—์–ด์žˆ๋Š” ํ˜•ํƒœ๋กœ, ๊ฐ๊ฐ์˜ ๋ธŒ๋žœ์น˜์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ฝ”๋“œ๋“ค์€ ์ถ”ํ›„์— mergeํ•˜์—ฌ main๊ณผ ํ•ฉ์ณ์ง€๊ฒŒ ๋œ๋‹ค.

  • ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋กœ ๋ฐ”๋กœ ์ปค๋ฐ‹์„ ๋‚ ๋ฆด ์ˆ˜๋„ ์žˆ๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณ‘ํ•ฉํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋งŒ์•ฝ ์„œ๋กœ ๊ฐ™์€ ๋ถ€๋ถ„์„ ๋‹ค๋ฅด๊ฒŒ ์ˆ˜์ •ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด? โ†’ ์ถฉ๋Œ์ด ์ƒ๊ธด๋‹ค!
    : ์ถฉ๋Œ์ด ๋‚˜๋ฉด ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋œจ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๐Ÿ‘‰๐Ÿปย ๊ธฐ๋ณธ bracnch

: ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” git ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.
git์—์„œ๋Š” ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” master์ด๊ณ  github์—์„œ๋Š” main

๐Ÿ‘‰๐Ÿปย branch์˜ HEAD ํฌ์ธํ„ฐ

: HEAD๋ผ๋Š” ํฌ์ธํ„ฐ๋Š” ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.


๐Ÿ“ [ ๋ธŒ๋žœ์น˜ ์‚ฌ์šฉ๋ฒ• ]

git branch โ†’ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก๊ณผ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ํ™•์ธ.
= ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก๋“ค์ด ๋ณด์—ฌ์ง€๊ณ  ํ˜„์žฌ ๋ธŒ๋žœ์น˜์—๋Š” *์™€ ์ดˆ๋ก์ƒ‰ ๊ธ€์”จ๋กœ ํ‘œํ˜„๋œ๋‹ค.

git branch Second โ†’ ํ˜„์žฌ ์‹œ์ ์—์„œ Second๋ผ๋Š” ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ.
= ๋งŒ์•ฝ main ๋ธŒ๋žœ์น˜์— ์œ„์น˜ํ•ด ์žˆ๋˜ ์ƒํƒœ์—์„œ branch๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ํ˜„์žฌ๊นŒ์ง€ ์ž‘์—…ํ•œ main ๋ธŒ๋žœ์น˜๋“ค์˜ ํŒŒ์ผ๋“ค์„ ํ•จ๊ป˜ ๋“ค๊ณ  ์™€์„œ second ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

git checkout Second โ†’ Second ๋ธŒ๋žœ์น˜๋กœ ์ด๋™.
= HEAD ํฌ์ธํ„ฐ๊ฐ€ main์—์„œ Second๋กœ ์ด๋™ํ•œ๋‹ค.

echo โ€˜hello worldโ€™ >> first.txt โ†’ hello world๋ผ๋Š” ๋‚ด์šฉ์„ ๋‹ด์€ first.txt ํŒŒ์ผ ์ƒ์„ฑ

git add first.txt

git commit -m โ€œ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜์— ํŒŒ์ผ ์ถ”๊ฐ€โ€

git push -set -upstream origin Second

โ†’ first ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•œ ํ›„์— Second ๋ธŒ๋žœ์น˜์— push

git switch main โ†’ main ๋ธŒ๋žœ์น˜๋กœ ๋ณ€๊ฒฝ
= HEAD ํฌ์ธํ„ฐ๊ฐ€ Second์—์„œ main์œผ๋กœ ๋ณ€๊ฒฝ


๐Ÿ“ [ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋˜๋Œ๋ฆฌ๊ธฐ ]

  1. restore ์ด์šฉ

    git restore filename

  2. checkout ์ด์šฉ

    git checkout - - filename โ†’ ํ•ด๋‹น ํŒŒ์ผ ๋‚ด์šฉ์ด ์ตœ์‹  ์ปค๋ฐ‹ ์ „์œผ๋กœ ๋Œ์•„๊ฐ€๋„๋ก ํ•œ๋‹ค.


๐Ÿ“ [ ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ฆฐ ๊ฒƒ ๋นผ๊ธฐ ]

  1. restore ์ด์šฉ

    git restore - - staged filename

  2. reset ์ด์šฉ

    git reset HEAD filename


๐Ÿ“ [ branch ์‚ญ์ œ ]

git branch -D branch๋ช… โ†’ ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ์˜ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ.

git push origin - - delete branch๋ช… โ†’ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ๋ธŒ๋žœ์น˜ ์‚ญ์ œ.


๐Ÿ“ [ branch ๋ณต๊ตฌ ]

git reflog โ†’ ๋ชจ๋“  ์ฐธ์กฐ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด.
= ์‚ญ์ œํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ์–ด๋–ค ์‹œ์ ์œผ๋กœ ๋ณต๊ตฌํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋ฅผ reflog๋กœ ์กฐํšŒํ•œ ํ›„์— ์ปค๋ฐ‹ ํ•ด์‹œ๊ฐ’์„ ์ฐพ์•„์„œ ๊ฐ€์ ธ์˜จ๋‹ค.

  • ๊ฐ€์žฅ ์™ผ์ชฝ์— ์ˆซ์ž์™€ ๋ฌธ์ž๊ฐ€ ์„ž์ธ ๊ฐ’์ด ๋‚˜์˜ค๋Š”๋ฐ ๊ทธ ๊ทธ๊ฒƒ์„ ํ•ด์‹œ๊ฐ’์ด๋ผ๊ณ  ํ•œ๋‹ค.

git checkout -d ์‚ญ์ œํ•œ ๋ธŒ๋žœ์น˜ ๋ช… ํ•ด์‹œ๊ฐ’(ex. 34f6ed0) โ†’ git checkout์œผ๋กœ ๋ณต๊ตฌ


๐Ÿ“ [ merge๋กœ ํ•ฉ๋ณ‘ํ•˜๊ธฐ ]

git checkout master โ†’ ํ•ฉ๋ณ‘ํ•  ๊ณต๊ฐ„.

git merge Second โ†’ ํ•ฉ๋ณ‘ํ•  ๋ธŒ๋žœ์น˜.

git push origin master โ†’ push๊นŒ์ง€ ํ•ด์ค˜์•ผ ์›๊ฒฉ์ €์žฅ์†Œ์— ๋ฐ˜์˜์ด ๋œ๋‹ค.

โœ… push ํ•  ๋•Œ ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋•Œ๋Š” github push error๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๊ธฐ!

profile
๐Ÿ  ๋ธ”๋กœ๊ทธ ์ด์ „ ์ค‘ โ†’ https://medium.com/@sebinndev

0๊ฐœ์˜ ๋Œ“๊ธ€