git branch๐Ÿ’ก

git branch์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•๊ณผgit flow ํˆด์„ ์ด์šฉํ•œ ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ, ๋ฒ„์ „์ƒ์„ฑ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
ํ˜‘์—… ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๋ฐฉ์‹์ด ๋˜๋ฏ€๋กœ ํ™•์‹คํžˆ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ์—ฐ์Šตํ•  ํ•„์š”๊ฐ€์žˆ๊ฒ ์Šต๋‹ˆ๋‹คโœ๏ธ


๐Ÿ’›branch command

  1. git branch

    • ํ˜„์žฌ ์ƒ์„ฑ๋˜์–ด์ง„ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก์ด ๋‚˜ํƒ€๋‚˜๊ณ  ํ˜„์žฌ ์œ„์น˜ํ•œ ๋ธŒ๋žœ์น˜๊ฐ€ ํ‘œ์‹œ๋จ
  2. git branch {๋ธŒ๋žœ์น˜๋ช…}

    • ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. git branch -D {๋ธŒ๋žœ์น˜๋ช…}

    • ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  4. git switch {๋ธŒ๋žœ์น˜}

    • ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    • git checkout ๊ณผ ๊ฐ™์Œ ((๊ตฌ๋ฒ„์ „))
  5. git merge {๋ธŒ๋žœ์น˜}

    • ํ˜„์žฌ ์œ„์น˜ํ•œ ๋ธŒ๋žœ์น˜์— ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

-git merge ์‹œ CONfLICT๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ์ด๋Š” ์ˆ˜์ •์‚ฌํ•ญ์— ์ถฉ๋Œ์ด ์ƒ๊ฒผ์Œ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ถฉ๋Œํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ˆ˜์ •ํ›„ ์ปค๋ฐ‹ํ•˜์—ฌ ํ•ด๊ฒฐ.
-git commit -m "" ์€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ปค๋ฐ‹๋ฉ”์„ธ์ง€๋ฅผ ๋ฌด์‹œํ•˜๋ฉฐ ์ž‘์„ฑ๋˜๋ฏ€๋กœ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ.
-main ๋ธŒ๋žœ์น˜๋ฅผ ์ œ์™ธํ•œ ๋ธŒ๋žœ์น˜๋“ค์€ ์ตœ์ดˆ push ์‹œ ์˜ต์…˜์œผ๋กœ -u ๋ฅผ ๋ถ™์—ฌ์ฃผ์ž.


๐Ÿงกgit ์‚ฌ์šฉ์ค‘ ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ํ•ด๊ฒฐ๋ฒ•!

  1. ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ

    • git mv ๋กœ ํŒŒ์ผ๋ช…์„ ๋ณ€๊ฒฝํ•˜๊ณ  git status๋ฅผ ํ™•์ธํ•˜๋ฉด ๊ธฐ์กด์˜ ํŒŒ์ผ์€ ์‚ญ์ œ๋˜๊ณ  ์ƒˆ๋กœ ์ง€์ •ํ•œ ํŒŒ์ผ๋ช…์˜ ํŒŒ์ผ์ด ์ƒˆ๋กœ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๊ณ  ์ธ์‹
      (์ด๋•Œ๋Š” ๋‹ค์‹œ ํŒŒ์ผ๋ช…์„ ์›๋ž˜๋Œ€๋กœ ๋Œ๋ ค๋†“์•„ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.)

    • ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ์„ ์›ํ•  ๋• git mv ๋กœ ๋ณ€๊ฒฝ

    • git mv๋กœ ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝํ›„์—๋Š” add๋ฅผ ์ƒ๋žตํ•˜๊ณ  ๋ฐ”๋กœ commitํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ทจ์†Œํ•˜๊ณ  ์ตœ์‹  ์ปค๋ฐ‹์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๊ธฐ (git add ์ „)

    • git restore {ํŒŒ์ผ๋ช…}
    • git checkout --{ํŒŒ์ผ๋ช…} ((๊ตฌ๋ฒ„์ „))
  3. addํ•œ ์ž‘์—…๋ฌผ unstagingํ•˜๊ธฐ

    • git reset HEAD {ํŒŒ์ผ๋ช…}
  4. ์ง์ „ ์ปค๋ฐ‹๋ฉ”์„ธ์ง€ ์ˆ˜์ •ํ•˜๊ธฐ

    • git commit --amend
  5. ์ด๋ฏธ ์ปค๋ฐ‹ํ•œ ๋‚ด์šฉ ๋˜๋Œ๋ฆฌ๊ธฐ

    • git revert HEAD ๋กœ ์ง์ „ ์ปค๋ฐ‹ ๋˜๋Œ๋ฆฌ๊ธฐ

    • git revert --no-commit HEAD~3..
      - git revert : ์ปค๋ฐ‹์„ ๋˜๋Œ๋ฆฌ๊ฒ ๋‹ค
      - --no-commit : ์ปค๋ฐ‹๋ฉ”์„ธ์ง€๋ฅผ ๋‚จ๊ธฐ์ง€์•Š๊ฒ ๋‹ค
      - HEAD~3.. : ๊ฐ€์žฅ ์ตœ์‹  ์ปค๋ฐ‹๋ถ€ํ„ฐ 3๊ฐœ์˜ ์ปค๋ฐ‹์„ ์ˆœ์ฐจ์ ์œผ๋กœ

    • ๋” ๊ฐ•๋ ฅํ•œ reset๊ธฐ๋Šฅ๋„ ์กด์žฌํ•˜๋‚˜ reset์€ ์ทจ์†Œํ•œ ์ปค๋ฐ‹์— ๋Œ€ํ•œ ๊ธฐ๋ก์„ ๊นจ๋—ํžˆ ์ง€์›Œ๋ฒ„๋ฆฌ๋ฏ€๋กœ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€์•Š์Œ


๐Ÿ’›git flow

windows ์—๋Š” ์ž๋™์œผ๋กœ gitflow์…‹ํŒ…์ด ๋˜์–ด์žˆ์œผ๋‚˜ macOS ์‚ฌ์šฉ์ž๋Š” ์„ค์น˜ํ•„์š”.
gitflow ์„ค์น˜ํŽ˜์ด์ง€

  1. ์ž‘์—…ํ•  ๋ธŒ๋žœ์น˜์—์„œ git flow init

    • develop ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ž๋™์œผ๋กœ ๋ธŒ๋žœ์น˜ ์ด๋™ ํ›„ ๋ฉ”์ธ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ
    • working tree๊ฐ€ ๊นจ๋—ํ•œ ์ƒํƒœ์—์„œ ์ง„ํ–‰
  2. git flow feature start {๋ธŒ๋žœ์น˜๋ช…}

    • ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ž‘์—…์€ feature์—์„œ ํ•œ ๋’ค develop์œผ๋กœ ๋ณ‘ํ•ฉํ•˜๊ธฐ
  3. git flow feature finish {๋ธŒ๋žœ์น˜๋ช…}

    • feature์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ commitํ•œ ํ›„ ์ž‘์—… ๋งˆ์น˜๊ธฐ
    • ์ž๋™์œผ๋กœ ์ž‘์—…๋‚ด์šฉ์ด develop์— ๋จธ์ง€ ๋œ ํ›„ ํ•ด๋‹น feat๋Š” ์†Œ๋ฉธ๋จ
  4. git flow release start {๋ฒ„์ „}

    • ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐฐํฌ
  5. git flow release finish {๋ฒ„์ „}

    • ์ƒ์„ฑ๋œ ๋ฒ„์ „์€ main๋ธŒ๋žœ์น˜์™€ develop ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉ๋˜๋ฉฐ tag๋ฅผ ๋‚จ๊น€
    • ๋ฒ„์ „ ์ƒ์„ฑ ํ›„์—๋Š” main๊ณผ develop๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ๊ฐ ๋ชจ๋‘ push ํ•ด์ฃผ์–ด์•ผํ•จ
    • git push --tags ๋กœ ํƒœ๊ทธ๊นŒ์ง€ ํ‘ธ์‹œํ•˜๋ฉด ์™„๋ฃŒ!

๐Ÿงก๋ฒ„์ „ ๋„ค์ด๋ฐ

  • ๋ฒ„์ „์€ ๋ณดํ†ต ์„ธ์ž๋ฆฌ์˜ ์ˆซ์ž์™€ ๋งˆ์นจํ‘œ๋กœ ํ‘œ๊ธฐ (v1.0.1)
  • ์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ๋Š” ๋ณดํ†ต ์•„์ฃผ ํฐ ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ ์นด์šดํŒ…
    (์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋“ฑ)
  • ๋‘๋ฒˆ์งธ ์ž๋ฆฌ๋Š” ๊ธฐ๋Šฅ์ ์ธ ๋ณ€๊ฒฝ, ์ถ”๊ฐ€ ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ ์นด์šดํŒ…
  • ์„ธ๋ฒˆ์งธ ์ž๋ฆฌ๋Š” ์‚ฌ์†Œํ•œ ํŒจ์น˜๋‚˜ ๋ฒ„๊ทธ์ˆ˜์ • ๋“ฑ์— ํ•ด๋‹น.

๋งˆ์น˜๋ฉฐ๐Ÿ™Œ

์ด์ „๊นŒ์ง„ git์œผ๋กœ github์— ๊ฐœ์ธ์ž‘์—…๋ฌผ์„ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์—์„œ ํ•˜๋‚˜์˜ ๊ฐ€์ง€๋ฅผ ์น˜๊ณ  ์ž‘์—…ํ•œ ๋’ค ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ์ •๋„์˜ ๋‹จ์ˆœํ•œ ์‚ฌ์šฉ๋งŒ ํ•  ์ค„ ์•Œ์•˜์—ˆ๋Š”๋ฐ ์กฐ๊ธˆ ๋” ์„ธ๋ถ€์ ์œผ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ๋‚˜๋ˆ„๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ๋ณด์•˜์Šต๋‹ˆ๋‹ค ๐Ÿฅฐ
ํŠนํžˆ git flow๋ฅผ ๋ฐฐ์›Œ๋ณด๋‹ˆ ํ˜‘์—…์„ ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊ฐ„์ ‘์ ์ธ ๊ฒฝํ—˜์ด ๋œ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค!

profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์ผ๊ธฐ ๐Ÿ’ญ

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