Git rebase

Choi Rimยท2021๋…„ 8์›” 22์ผ
0

git

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

git rebase

merge์™€ rebase์˜ ์ฐจ์ด์ 

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

git -HEAD

  • ํ˜„์žฌ ์ฒดํฌ์•„์›ƒ๋œ ์ปค๋ฐ‹์„ ๊ฐ€๋ฅดํ‚จ๋‹ค
    • ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ ์ปค๋ฐ‹
    • HEAD๋Š” ๋ธŒ๋žœ์น˜์˜ ์ด๋ฆ„ ๊ฐ€๋ฅดํ‚ด

rebase ๋ช…๋ น์–ด

  • git rebase -i main
    • rebase๋ฅผ ํ•˜๋ฉด์„œ squash๋ฅผ ์‚ฌ์šฉํ•ด ์ปค๋ฐ‹์„ ํ•˜๋‚˜๋กœ ์ •๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค
  • git rebase --abort, git reflog
    • ์ž˜๋ชป ๋ฆฌ๋ฒ ์ด์Šค ํ–ˆ์„ ์‹œ, ๋Œ์•„๊ฐˆ ์ง€์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค
  • git reset --hard ๋Œ์•„๊ฐˆ์ง€์ 
    • ๋Œ์•„๊ฐˆ ์ง€์ ์œผ๋กœ ๋‹ค์‹œ git์„ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค
  • conflict ๋ฐœ์ƒ ์‹œ ๐Ÿคฏ
    • ์—๋””ํ„ฐ์—์„œ ์ถฉ๋Œํ•œ ์ฝ”๋“œ๋ฅผ ํ•ด๊ฒฐํ•œ ํ›„
      git add . -> git rebase --continue๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • commit์„ ํ•  ํ•„์š”๋Š” ์—†๋‹ค.
profile
https://rimi0108.github.io/

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