์ผ๋ฐ์ ์ผ๋ก git rebase
๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์์ ์ํํฉ๋๋ค.
- ์ด์ ์ปค๋ฐ ๋ฉ์์ง ํธ์ง
- ์ฌ๋ฌ ์ปค๋ฐ์ ํ๋๋ก ๊ฒฐํฉ
- ๋ ์ด์ ํ์ํ์ง ์์ ์ปค๋ฐ ์ญ์ ๋๋ ๋๋๋ฆฌ๊ธฐ
๊ฒฝ๊ณ
์ปค๋ฐ ๊ธฐ๋ก์ ๋ณ๊ฒฝํ๋ฉด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์ด๋ฏธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํธ์ํ ๊ฒฝ์ฐ ์ปค๋ฐ์ ๋ค์ ์ง์ ํ๋ ๊ฒ์ ๋ถ์ ์ ํ ์ฌ๋ก๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์์ ํ๊ฒ ๋ค์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด ๋์ด์ค๊ธฐ ์์ฒญ ๋ณํฉ ์ ๋ณด์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋ถ๊ธฐ์ ๋ํ ์ปค๋ฐ ๋ค์ ์ง์
๋ค๋ฅธ ๋ถ๊ธฐ์ ํ์ฌ ๋ถ๊ธฐ ์ํ ๊ฐ์ ๋ชจ๋ ์ปค๋ฐ์ ๋ค์ ์ง์ ํ๋ ค๋ฉด ์ ธ(Windows ๋ช ๋ น ํ๋กฌํํธ ๋๋ Mac ๋ฐ Linux์ฉ ํฐ๋ฏธ๋)์์ ๋ค์ ๋ช ๋ น์ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
git rebase --interactive OTHER-BRANCH-NAME
ํน์ ์์ ์ ๋ํ ์ปค๋ฐ ๋ค์ ์ง์
ํ์ฌ ๋ถ๊ธฐ์์ ๋ง์ง๋ง ๋ช ๊ฐ์ ์ปค๋ฐ์ ๋ค์ ์ง์ ํ๋ ค๋ฉด ์ ธ์ ๋ค์ ๋ช ๋ น์ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
git rebase --interactive HEAD~7
๋ค์ ์ง์ ํ๋ ๋์ ์ฌ์ฉํ ์ ์๋ ๋ช ๋ น
๋ค์ ์ง์ ํ๋ ๋์ ์ฌ์ฉํ ์ ์๋ 6๊ฐ์ง ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
pick
pick
๋ ๋จ์ํ ์ปค๋ฐ์ด ํฌํจ๋จ์ ์๋ฏธํฉ๋๋ค.pick
๋ช ๋ น ์์๋ฅผ ๋ค์ ์ ๋ ฌํ๋ฉด ๋ค์ ์ง์ ์ค์ผ ๋ ์ปค๋ฐ ์์๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค. ์ปค๋ฐ์ ํฌํจํ์ง ์๋๋ก ์ ํํ ๊ฒฝ์ฐ ์ ์ฒด ์ค์ ์ญ์ ํด์ผ ํฉ๋๋ค.reword
reword
๋ช ๋ น์pick
์ ์ ์ฌํ์ง๋ง ์ฌ์ฉํ ํ์๋ ๋ค์ ์ง์ ํ๋ก์ธ์ค๊ฐ ์ผ์ ์ค์ง๋๋ฏ๋ก ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ปค๋ฐ์ ์ํด ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.edit
edit
๋ฅผ ์ปค๋ฐ์ผ๋ก ์ ํํ๋ฉด ์ปค๋ฐ์ ์์ ํ ์ ์์ต๋๋ค. ์ฆ, ์ปค๋ฐ์ ์์ ํ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ค์ ์ง์ ์ ๊ณ์ํ๊ธฐ ์ ์ ๋ ๋ง์ ์ปค๋ฐ์ ์ํํ ์๋ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํฐ ์ปค๋ฐ์ ๋ ์์ ์ปค๋ฐ์ผ๋ก ๋ถํ ํ๊ฑฐ๋ ์ปค๋ฐ์์ ์๋ชป๋ ๋ณ๊ฒฝ ๋ด์ฉ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.squash
- ์ด ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ๋ ๊ฐ ์ด์์ ์ปค๋ฐ์ ๋จ์ผ ์ปค๋ฐ์ผ๋ก ๊ฒฐํฉํ ์ ์์ต๋๋ค. ์ปค๋ฐ์ ์์ ์ปค๋ฐ์ ๋ฐ์ด ๋ฃ์ด์ง๋๋ค. Git์ ์ฌ์ฉํ๋ฉด ๋ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ชจ๋ ์ค๋ช ํ๋ ์ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
fixup
- ์ด๋
squash
์ ์ ์ฌํ์ง๋ง ๋ณํฉํ ์ปค๋ฐ์์๋ ํด๋น ๋ฉ์์ง๊ฐ ์ญ์ ๋ฉ๋๋ค. ์ปค๋ฐ์ ๋จ์ํ ์์ ์ปค๋ฐ์ ๋ณํฉ๋๋ฉฐ, ์ด์ ์ปค๋ฐ์ ๋ฉ์์ง๋ ๋ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ชจ๋ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. exec
- ์ด๋ ๊ฒ ํ๋ฉด ์ปค๋ฐ์ ๋ํด ์์์ ์ ธ ๋ช ๋ น์ ์คํํ ์ ์์ต๋๋ค.
git rebase
๋ฅผ ์ฌ์ฉํ๋ ์์
์ด๋ค ๋ช ๋ น์ ์ฌ์ฉํ๋ Git์ ๊ธฐ๋ณธ ํ ์คํธ ํธ์ง๊ธฐ๋ฅผ ์์ํ๊ณ ์ ํํ ๋ฒ์์ ์ปค๋ฐ์ ์์ธํ ํ์ํ๋ ํ์ผ์ ์ฝ๋๋ค. ์ด ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
pick 1fc6c95 Patch A
pick 6b2481b Patch B
pick dd1475d something I want to split
pick c619268 A fix for Patch B
pick fa39187 something to add to patch A
pick 4ca2acc i cant' typ goods
pick 7b36971 something to move before patch B
# Rebase 41a72e6..7b36971 onto 41a72e6
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
์ด ์ ๋ณด๋ฅผ ์์์ ์๋๋ก ๋๋๋ฉด ๋ค์์ด ํ์๋ฉ๋๋ค.
- ์์์ ๊ณผ ํ์ฌ ๋ถ๊ธฐ ์ํ ์ฌ์ด์ 7๊ฐ์ ๋ณ๊ฒฝ ๋ด์ฉ์ด ์์์ ๋ํ๋ด๋ 7๊ฐ์ ์ปค๋ฐ์ด ๋์ด๋ฉ๋๋ค.
- ๋ค์ ์ง์ ํ๋๋ก ์ ํํ ์ปค๋ฐ์ ๊ฐ์ฅ ์ค๋๋ ๋ณ๊ฒฝ ๋ด์ฉ(๋งจ ์)๋ถํฐ ์ต์ ๋ณ๊ฒฝ ๋ด์ฉ(์๋์ชฝ)์ ์์๋๋ก ์ ๋ ฌ๋ฉ๋๋ค.
- ๊ฐ ์ค์๋ ๋ช
๋ น(๊ธฐ๋ณธ์ ์ผ๋ก
pick
), ์ปค๋ฐ SHA ๋ฐ ์ปค๋ฐ ๋ฉ์์ง๊ฐ ๋์ด๋ฉ๋๋ค. ์ ์ฒดgit rebase
ํ๋ก์์ ๋ ์ธ ์ด์ ์กฐ์์ ์ค์ฌ์ผ๋ก ํฉ๋๋ค. ๋ณ๊ฒฝํ ๋ด์ฉ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ _๋ค์ ์ง์ _๋ฉ๋๋ค. - ์ปค๋ฐ ํ์ Git์ ์์
์ค์ธ ์ปค๋ฐ ๋ฒ์๋ฅผ ์๋ ค ์ค๋๋ค(
41a72e6..7b36971
). - ๋ง์ง๋ง์ผ๋ก Git์ ์ปค๋ฐ์ ๋ค์ ์ง์ ํ ๋ ์ฌ์ฉํ ์ ์๋ ๋ช ๋ น์ ์๋ ค ์ค๋๋ค.