[git] ์์กด์ ์ํ Git : merge, rebase, cherry-pick, squash and merge
๊ณผ๊ฑฐ์ ๋ : (๋ฌด์ง์ฑ) commit, merge
ํ์ฌ์ ๋ : (์! ์๊ฐ๋ณด๋ค ์ปค๋ฐ ๊ธฐ๋ก์ ํ์ธํ ์ผ์ด ์๋ค.. ์ปค๋ฐ ๋ฉ์์ง๋ ๊ธฐ๋ก์ ์ ๋จ๊ฒจ๋์ผ ํ๋ ๊ฒ์ ๊นจ๋ฌ์ ์ํ)
๊ทธ๋์, merge, rebase, cherry-pick, squash and merge ์ ๋ํด ์ ๋ฆฌ๋ฅผ ์งํํด๋ณด๋ คํ๋ค
- ์ปค๋ฐ์ด ๋ถ๊ธฐ๋๋ base๋ฅผ ์์ ํ๋ ์์
- ๊ณตํต๋ ์ปค๋ฐ์ผ๋ก๋ถํฐ ์์ ํ๋ ค๋ base ์ปค๋ฐ๊น์ง์ ์ฐจ์ด์ ์
1) ํจ์น(patch)์ ์์๋ก ์ ์ฅํ๊ณ
2) ์ฐธ์กฐ ์ปค๋ฐ์ ์์ ํ ํ
3) ํจ์น(patch)๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ์ฉํ๋ค
- ์๋ก์ด commit์ ๋ง๋ค์ง ์๋๋ค
issue1 : ํจ์ ๊ฒฐํจ ์์
issue2 : ํจ์ ์ถ๊ฐ

๋ฐฉ๋ฒ1) ์์ ์ฉ ๋ธ๋์น๋ผ๋ฆฌ ๋ณํฉ์ ๋ง์น ํ, ๋ฐฐํฌ์ฉ ๋ธ๋์น์ ๋ณํฉํ๋ ๋ฐฉ๋ฒ

๋ฐฉ๋ฒ2) ์์ ์ข ๋ฅ๊ฐ ์ ์ฌํ ๋ธ๋์น๋ผ๋ฆฌ ํ์ค๊ธฐ๋ก ํ์๋๋๋ก ์ ๋ฆฌํ๋ ๋ฐฉ๋ฒ

issue2์ base๋ฅผ issue1๋ก ์ฌ๋ฐฐ์นํ๊ณ ์ํ๋ค
issue2 ๋ธ๋์น : git rebase issue1
rebase๋ฅผ ์ทจ์ : git rebase --abort
์ถฉ๋ ํด๊ฒฐํ : git add . git rebase --continue
[rebase ์ฌ์ฉ ์์] https://jojoldu.tistory.com/120
์ด๋ฏธ ์ปค๋ฐ๋ ๋ด์ฉ์์ author(์์ฑ์) ์์ ํ๊ธฐ
ํ๋์ Source Tree๋ก github ๊ณ์ ์ฌ๋ฌ๊ฐ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฐํน ์ ๊ท์์ฑ or ์๋ก ํด๋ก ๋ฐ์ ์ ์ฅ์ ์์ฑ์๊ฐ ์์น์๋ ๊ณ์ ์ผ๋ก ๋ฑ๋ก๋์ด ์ปค๋ฐ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ด ๊ฒฝ์ฐ ์ํ๋ ๊ณ์ ์ผ๋ก ์ปค๋ฐ์ด
jojoldu.tistory.com
๋ธ๋์น๋ฅผ ์์ฑํ๊ณ ์์ ์ด ๋๋ ๋ค์ master์ merge๋ฅผ ์งํํ ๋๊น์ง master์ ์ด๋ ํ ๋ณ๊ฒฝ๋ ์๋ ๊ฒฝ์ฐ
master๋ฅผ ์๋ก ์์ฑํ ๋ธ๋์น์ ๋์ผํ ์ปค๋ฐ์ ๊ฐ๋ฅดํค๋๋ก ์ด๋๋ง ํ๋ฉด ๋๋ค


base์์ commit์ ์งํํด์ ๋ถ๊ธฐํด ๋๊ฐ ์ํ
๋ ๋ธ๋์น ์ค ์ด๋ ๊ฒ๋ base์ ์์นํ์ง ์์
์๋ก์ด commit์ด ์์ฑ๋จ


fast-forward merge๊ฐ ๋๋ฉด์ master์ dev1์ commit์ด ๋ชจ๋ ํฉ์ณ์ง

--ff
ํ ๋ธ๋์น์ merge ๋์ ๋ธ๋์น๊ฐ fast-forward ๊ด๊ณ์ ์๋ ๊ฒฝ์ฐ ์๋ก์ด commit์ ์์ฑํ์ง ์๊ณ
๋ธ๋์น์ ์ฐธ์กฐ ๊ฐ๋ง ๋ณ๊ฒฝ๋๋๋ก ํจ
fast-forward ๊ด๊ณ๊ฐ ์๋๋ฉด merge commit์ ์์ฑํจ
--no-ff
merge ๋์๊ณผ fast-forward ๊ด๊ณ์ฌ๋ ๊ฐ์ ๋ก merge commit์ ์์ฑํ๊ณ ๋ณํฉํจ
๋ธ๋์น ๊ด๊ณ์ ์๊ด์์ด ํ์ํ commit๋ง ๊ฐ์ ธ์ฌ ์ ์์
์ด๋ค ๋ธ๋์น์์ merge ํ๋์ง ๊ธฐ๋ก์ ๋จ๊ธธ ์ ์์
--squash
commit ์ด๋ ฅ๊ณผ merge๋ ๋ธ๋์น ์ด๋ ฅ๋ ๋จ๊ธฐ์ง ์์
์๋ก์ด commit์ ์๋ ๋ธ๋์น์ ๋ด์ฉ์ ๋ชจ๋ ๋ญ์ณ ๋์
๋ค๋ง, dev1 ๋ธ๋์น์ ํ๋จ๊ณ ์ด์ commit ์ ๋ณํฉํ๋ ค ํ๋ค

๋ฐฉ๋ฒ1) dev1 ๋ธ๋์น๋ฅผ ์ํ๋ commit๊น์ง hard resetํ ํ merging
- ๊ธฐ์กด์ ์ด๋ ฅ์ ์ญ์ ํด๋ฒ๋ฆฐ๋ค
๋ฐฉ๋ฒ2) git cherry-pick ๋ช ๋ น ์ฌ์ฉํ๊ธฐ
- ๊ณผ๊ฑฐ ์ด๋ ฅ ์ค ํ์ํ ๋ถ๋ถ๋ง ๊ฐ์ ธ์จ๋ค
HEAD๊ฐ ๊ฐ๋ฆฌํค๋ ํ์ฌ ๋ธ๋์น์ ํน์ commit ์ถ๊ฐ : git cherry-pick [commit hash]
cherry-pick ์์ ์ทจ์ : git cherry-pick --abort
์ถฉ๋ ํด๊ฒฐํ : git add . git cherry-pick --continue
merge commit์ ์ถ๊ฐ : git cherry-pick –m [parent number] [merge commit ID]
merge commit์ ๊ฒฝ์ฐ ์ด๋ค ๋ถ๋ถ์ merge๋ฅผ ๊ฐ์ ธ์ฌ์ง ์ ์ ์๋ค. ๊ทธ๋์ parent number๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค.(1๋ถํฐ ์์ํ๋ฉฐ main line์ด 1)
ํ์
A์ B๊ฐ ๋ถ์ ์ค, A๊ฐ ๋ณธ์ธ์ด ์์ฑํ ๋ถ๋ถ์ ํ ์คํธํ๊ธฐ ์ํด์๋ B๊ฐ ๊ตฌํํ ๋ถ๋ถ์ด ํ์ํจ
B๊ฐ ์์ฑ์ด ์๋๊ฒฝ์ฐ, B๊ฐ ์์ฑํ commit ํ๋๋ง ์ฐพ์์ A์ ๋ธ๋์น์ ๊ฐ์ ธ์์ ์ํ
๋ฒ๊ทธ ์์
๊ธฐ๋ฅ 1์ ์์ฑํ๊ณ ๊ธฐ๋ฅ2๋ฅผ ๊ฐ๋ฐ ์ค.
๋์ค์ ์๊ณ ๋ณด๋ ๊ธฐ๋ฅ1์ ๋ฒ๊ทธ๊ฐ ์์
์ฌ๋๋ค์ด ๋ฒ๊ทธ๋ก ์ธํ ๋ถํธ์ ๊ฒช๊ธฐ ์ ์ ๋ฒ๊ทธ ํจ์น๋ฅผ ํด์ ๋ฐฐํฌ์ฉ ๋ธ๋์น์ cherry-pick
[ ์ถ์ฒ ]
| [ํ ์คํธ] ๋จ์ํ ์คํธ vs ํตํฉํ ์คํธ vs ์ธ์ํ ์คํธ (0) | 2024.12.11 |
|---|---|
| [git] git branch ์ ๋ต : develop, release, hotfix (0) | 2024.03.18 |
| [git] ์์กด์ ์ํ Git : ๋๋๋ฆฌ๊ธฐ ์๋ฆฌ์ฆ --amend, reset, revert (0) | 2024.03.18 |
| [git] ์์กด์ ์ํ git : ํ์ผ์ ์ํ , ์ปค๋ฐ ํ์คํ ๋ฆฌ (0) | 2024.03.15 |
| [์ฝ๋๋ฆฌ๋ทฐ] ์ฝ๋๋ฆฌ๋ทฐ by ๋๋ฆผ์จ๋ฆฌ (0) | 2023.09.24 |