[git] git pull --rebase vs --no-rebase ์ฐจ์ด
๐ต git์ ์ฅ์ ์ ๋๋ผ๋ ์์ฆ
์์ฆ ์ฌ๋ฌ๋์ PC์์ git์ ํ์ฉํ๊ณ ์์ฝ๊ฒ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๊ณ ์๋ค.
์์ง ํผ์ ์์ ํ๋ ์์ค์ด๋ผ git์ ํ์ฉํ๋ค๊ณ ํด๋ด์ผ Github์ ์ ์ฅ๋ ๋ด ์์ ๋ฌผ์ pullํ๊ณ ์์ ์ด ๋๋๋ฉด pushํ๋ ์ ๋๋ก ํ์ฉ ์ค์ด๋ค.
์ด๋ ๊ฒ ์์ ํ๋ฉด ์์ ํ๊ฒ ๋ด ์ฝ๋๊ฐ ๊ด๋ฆฌ๊ฐ ๋๋ ์ํฉ์ด๋ฉด์ ๋ด ๊ณต๋ถ ๊ธฐ๋ก์ด ํ ์ค ํ ์ค ๋จ๋ ๋๋์ด๋ผ ๋ฌํ๊ฒ ๋ฟ๋ฏํ๊ธฐ๊น์ง ํ๋ค.
์ด๋ฐ ์ํฉ์์ ๊ฐ์ฅ ๊ฑฑ์ ๋๋ ๊ฒ์ ์ญ์ ์ฌ๋ฌ๋์์ ์์ ํ ์ฝ๋์ version์ด ์ถฉ๋ํ๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ด ๊ฒฝํ์ ํฌ์คํ ํ๋ ค๊ณ ํ๋ค.
โช git push
๋ฅผ ํ๋๋ฐ conflict๊ฐ ์๊ธฐ๋ฉด?
1) ๋จผ์ git status
๋ก ์ถฉ๋์ด ์ผ์ด๋ ํ์ผ ํ์ธ
2) master ๋ธ๋์น์ ์ฝ๋๋ฅผ mgergeํ๊ณ ์ฌ๋ฐ๋ฅธ ์ ๋ต์ ๋ฒ์ ์ผ๋ก ์์ ํ๋ ๊ณผ์ ์ด ํ์.
โช git pull
์ ์ฌ์ค ๋ ๊ฐ์ง git ๋ช
๋ น์ด๋ฅผ ํฉ์ณ๋์
git fetch
: ์๊ฒฉ ๋ ํฌ์ ์ต์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์ ธ์ค์ง๋ง, ๋ด ๋ก์ปฌ ๊ณต๊ฐ์๋ ๋ฐ๋ก ์ ์ฉ x. ๋ณ๊ฒฝ์ฌํญ์ ๋ํ ํ์ธ๋ง ํจgit merge
: fetch๋ก ๊ฐ์ ธ์จ ์ต์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ก์ปฌ ๋ธ๋์น์ ํฉ์น๋ ๋จ๊ณ
1)git pull
๋๋ git pull --no-rebase
1
2
- `git pull`์ ๊ธฐ๋ณธ์ ์ผ๋ก merge ๋ฐฉ์์ผ๋ก ์๋
- `--no-rebase`: ๋ณํฉ(Merge), ๋ชจ๋ ์ปค๋ฐ ๋ณด์กด, merge commit ์์ฑ๋จ
2) git pull --rebase
--rebase
: ๋ฆฌ๋ฒ ์ด์ค(Rebase), ๋ด ์ปค๋ฐ์ ๋ฆฌ๋ชจํธ ์ปค๋ฐ ์๋ก ์ฌ๋ฐฐ์น
โช ๋น๊ต
์ต์ | ์ค๋ช | ์ปค๋ฐ ๊ตฌ์กฐ |
---|---|---|
โno-rebase | ์์ , ํ์ ์ ์ ํฉ | ๋ถ๊ธฐ + ๋ณํฉ (Y์ํ) |
โrebase | ๊น๋ํ ํ์คํ ๋ฆฌ | ์ง์ ํ (ํด์ ๋ณ๊ฒฝ) |
- ํ์
์ค์ด๋ผ๋ฉด โ
--no-rebase
- ํผ์ ์์
ํ ๋ธ๋์น ์ ๋ฆฌ โ
--rebase
โช ์ค์ ์์
GitHub์ ์ด๋ฏธ main ๋ธ๋์น์ ์ปค๋ฐ 1๊ฐ ์์:
1
A โ ์๋ฒ (origin/main)
๋ด ๋ก์ปฌ์์๋ clone ํ, ํผ์ ์ปค๋ฐ 2๊ฐ ๋ง๋ฆ:
1
A - B - C โ ๋ก์ปฌ (main)
๊ทธ๋ฐ๋ฐ ๋๊ตฐ๊ฐ GitHub์ D ์ปค๋ฐ์ pushํด๋ฒ๋ฆผโ
๊ทธ๋ผ ์ด์ ์๋ฒ๋:
1
A - D โ ์๋ฒ (origin/main)
์ด ์ํฉ์์ ๋๋ git pull ํด์ผ ํ๋๋ฐโฆ
โ 1. git pull โno-rebase ํ์ ๊ฒฝ์ฐ (merge)
1
2
3
4
5
A - D
\
B - C
\
M โ ๋ก์ปฌ main (merge commit)
โ 2. git pull โrebase ํ์ ๊ฒฝ์ฐ (rebase)
1
A - D - B' - C' โ ๋ก์ปฌ main (rebase ํ)
๋ด ์ปค๋ฐ B, C๊ฐ D ๋ค์ ์ฌ์ ๋ ฌ๋จ (Bโ, Cโ๋ ํด์๊ฐ ๋ฐ๋ ์๋ก์ด ์ปค๋ฐ)
ํ์คํ ๋ฆฌ๋ ์ง์ ํ์ผ๋ก ๊น๋
๋จ, ์๋ B, C๋ ์ฌ๋ผ์ง๊ณ ์๋ก์ด ์ปค๋ฐ์ด ์๊ธด ๊ฒ์ฒ๋ผ ๋จ
๐ต ์ ๋ฆฌํ๋ฉด
merge ๋ฐฉ์
โ ๋ ํ์คํ ๋ฆฌ๋ฅผ ๊ทธ๋๋ก ํฉ์ณ์ merge commit ํ๋ ์ถ๊ฐ
rebase ๋ฐฉ์
โ ๋ด ์์ ์ ์๋ ์์ ์ดํ์ ํ ๊ฒ์ฒ๋ผ ์ฌ๋ฐฐ์ด
์ํฉ | ์ถ์ฒ ์ต์ |
---|---|
ํ์ ์ค, ์์ ์ฑ ์ค์ | --no-rebase |
๊ฐ์ธ ํ๋ก์ ํธ, ์ปค๋ฐ ๊น๋ํ๊ฒ | --rebase |