git ์์ ๋ธ๋์น๋ผ๋ฆฌ ํฉ์น๋ ๋ฐฉ๋ฒ์ Merge , Rebase ๊ฐ ์์.
์คํ๊ฒฐ๊ณผ๋ ๊ฐ์ง๋ง commit history ๊ฐ ๋ฌ๋ผ์ง
( conflict !!! ๋ ๊ฐ ์ด์์ ๋ธ๋์น์์ ๋์ผํ ํ์ผ์ ๋์ผํ ๋ถ๋ถ์ ์์ ํ์ ๋ ๋ฐ์)
- Merge
์ฝ๊ณ ์์ ํ์ง๋ง commit history ๊ฐ ๋ณต์กํด์ง
์ด๋ ฅ์ด ๋ง์ถฐ์ง์ง ์์ ์ํ๋ก merge ํ๋ฉด ์๋ก์ด branch ๊ฐ ์์ฑ๋๋ค. (์ด๋ ฅ์ด ๋จ์)
$ git branch
$ git checkout master
$ git merge A
$ git merge B // merge ์ด๋ ฅ ๋จ์
- Rebase
- ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ฐฐ์นํ๋ ๊ฒ
- ๋ง์ง๋ง ๋๋ ์ง๊ธฐ ์ ์ด๋ ฅ์ ๊ธฐ์ค์ผ๋ก base ๋ฅผ ๋ง์ถ๊ณ ํฉ์น ๋ธ๋์น ์ด๋ ฅ ์ ์ฉ
- branch์ base๊ฐ ๋๋ ์ต์ ์ปค๋ฐ์ผ๋ก base๋ฅผ ๋ง์ถ๋ ์์
- commit history๋ฅผ ๊น๋ํ๊ฒ ๊ด๋ฆฌ ๊ฐ๋ฅ (๋ธ๋์น ๊ด๋ฆฌ)
- 1. merge์ด๋ ฅ์ด ์๋ค. 2. ๋ผ์ธ์ดํ๋๋ค
$ git checkout master
$ git merge A // master ๊ธฐ์ค์ผ๋ก A merge
$ git checkout B
$ git rebase master // B ๊ธฐ์ค์ผ๋ก master ๋ฒ ์ด์ค๋ก ๊น๊ธฐ
$ git checkout master
$ git merge B // master ๊ธฐ์ค์ผ๋ก B merge
- Rebase ์ํ์ฑ
(์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด) push ํ๊ธฐ ์ ์๋ง ์ฌ์ฉ!!
ํ์ ์ ๊ณต๊ฐ์ปค๋ฐ์ Rebase ํ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธด๋ค
- rebase ๋ช ๋ น์ด
$ git rebase ๋ธ๋ ์น๋ช // ๋ธ๋ ์น๋ฅผ base ๋ก ๋ง์ถ๊ณ log ๋ฅผ ์ ํ์ผ๋ก ๋ง์ถ๋ค.
$ git log -graph -oneline // ๋ก๊ทธ ๊ทธ๋ํ๋ก ๋ณด๊ธฐ