[Git] Branch

im_taehoยท2023๋…„ 1์›” 2์ผ
0
post-thumbnail

๐Ÿšฉ Branch ๋ชฉ์ 

  • ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ชจ์Šต์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ๋•Œ
    • ex) ์‹ค๋ฐฐํฌ์šฉ, ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์šฉ, ์ƒˆ๋กœ์šด ์‹œ๋„์šฉ
  • ์—ฌ๋Ÿฌ ์ž‘์—…๋“ค์ด ๊ฐ๊ฐ ๋…๋ฆฝ๋˜์–ด ์ง„ํ–‰๋  ๋•Œ
    • ex) ์‹ ๊ธฐ๋Šฅ 1, ์‹ ๊ธฐ๋Šฅ 2, ์ฝ”๋“œ ๊ฐœ์„ , ๊ธด๊ธ‰ ์ˆ˜์ •



๐Ÿšฉ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ/์ด๋™/์‚ญ์ œ/์ˆ˜์ •/ํ™•์ธ

๐Ÿ’ก ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

$ git branch <๋ธŒ๋žœ์น˜๋ช…>

๐Ÿ’ก ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก ํ™•์ธ

$ git branch

๐Ÿ’ก ๋ธŒ๋žœ์น˜ ์ด๋™

$ git switch <์ด๋™ํ•  ๋ธŒ๋žœ์น˜๋ช…>

๐Ÿ’ก ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ์ด๋™

$ git switch -c <๋ธŒ๋žœ์น˜๋ช…>

๐Ÿ’ก ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

$ git branch -d <์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜๋ช…>

๐Ÿ’ก ๋ธŒ๋žœ์น˜ ๊ฐ•์ œ์‚ญ์ œ

$ git branch -D <๊ฐ•์ œ์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜๋ช…>

๐Ÿ’ก TIP

  • $ git log ๋ช…๋ น์–ด๋Š” ํ˜„์žฌ ์œ„์น˜ํ•œ ๋ธŒ๋žœ์น˜์—์„œ์˜ ์ปค๋ฐ‹ ๋กœ๊ทธ๋งŒ ํ™•์ธ ๊ฐ€๋Šฅ
  • ์—ฌ๋Ÿฌ ๋ธŒ๋žœ์น˜์˜ ๋‚ด์—ญ์„ ํ•œ๋ˆˆ์— ๋ณด๋Š” ๋ช…๋ น์–ด๋Š” ์•„๋ž˜ ์ฐธ์กฐ
$ git log --all --decorate --oneline --graph


๐Ÿšฉ ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์น˜๋Š” ๋ฐฉ๋ฒ•

๐Ÿ’ก merge

  • ๋‘ ๋ธŒ๋žœ์น˜๋ฅผ ํ•œ ์ปค๋ฐ‹์œผ๋กœ ์ด์–ด ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ•

๐Ÿ’ก add-coach ๋ธŒ๋žœ์น˜๋ฅผ main ๋ธŒ๋žœ์น˜๋กœ merge ํ•˜๋Š” ๊ฒฝ์šฐ

  • main ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ ํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ๋ณ‘ํ•ฉ
$ git merge add-coach
  • ๋ณ‘ํ•ฉ์ด ์™„๋ฃŒ๋œ ๋ธŒ๋žœ์น˜๋Š” ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์‚ญ์ œ
$ git branch -d add-coach
  • TIP : merge๋„ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์ด๊ธฐ ๋•Œ๋ฌธ์— reset์œผ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ ๊ฐ€๋Šฅ

๐Ÿ’ก merge ์ถฉ๋Œ ํ•ด๊ฒฐํ•˜๊ธฐ

  • ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ $ git status ํ™•์ธํ•˜๊ธฐ
  • VS Code์—์„œ ์˜ค๋ฅ˜๋‚œ ๋ถ€๋ถ„ ํ™•์ธํ•˜๊ธฐ
  • ๋‹น์žฅ ํ•ด๊ฒฐ์ด ์–ด๋ ค์šด ๊ฒฝ์šฐ merge ์ค‘๋‹จํ•˜๊ธฐ
$ git merge --abort
  • ํ•ด๊ฒฐ์ด ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ $ git add ., git commit -m "<๋ฉ”์‹œ์ง€">์œผ๋กœ ๋ณ‘ํ•ฉ ์™„๋ฃŒ

๐Ÿ’ก rebase

  • ๋ธŒ๋žœ์น˜๋ฅผ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์— ์ด์–ด ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ•

๐Ÿ’ก new-teams ๋ธŒ๋žœ์น˜๋ฅผ main ๋ธŒ๋žœ์น˜๋กœ rebase ํ•˜๋Š” ๊ฒฝ์šฐ

  • new-teams ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ ํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ๋ณ‘ํ•ฉ
    • ๐Ÿšจ merge์™€๋Š” ๋ฐ˜๋Œ€์ด๋ฏ€๋กœ ์ฃผ์˜!
$ git rebase main
  • ์†Œ์ŠคํŠธ๋ฆฌ์—์„œ ํ™•์ธํ•ด๋ณด๋ฉด main ๋ธŒ๋žœ์น˜๋Š” new-teams ๋ธŒ๋žœ์น˜๋ณด๋‹ค ๋’ค์ณ์ ธ ์žˆ๋‹ค.
  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด main ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ ํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰
$ git merge new-teams
  • ์ดํ›„ new-teams ๋ธŒ๋žœ์น˜ ์‚ญ์ œ
$ git branch -d new-teams

๐Ÿ’ก rebase ์ถฉ๋Œ ํ•ด๊ฒฐํ•˜๊ธฐ

  • ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ $ git status ํ™•์ธํ•˜๊ธฐ
  • VS Code์—์„œ ์˜ค๋ฅ˜๋‚œ ๋ถ€๋ถ„ ํ™•์ธํ•˜๊ธฐ
  • ๋‹น์žฅ ํ•ด๊ฒฐ์ด ์–ด๋ ค์šด ๊ฒฝ์šฐ rebase ์ค‘๋‹จํ•˜๊ธฐ
$ git rebase --abort
  • ํ•ด๊ฒฐ์ด ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ $ git add . ํ›„์—
$ git rebase --continue
  • ์ถฉ๋Œ์ด ๋ชจ๋‘ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.


[์‚ฌ์ง„ ์ถœ์ฒ˜] https://www.atlassian.com/git/tutorials/merging-vs-rebasing
profile
๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค :)

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